アプリケーション用のdockerのすべての利点、Habréで既に何度も説明されていること、およびそのアーキテクチャ。
jvmアプリケーションのパッケージングの実際的な問題を解決し、hub.docker.comで公開し、どこでも実行できるミニチュアLinux、JDK、およびアプリケーションを含むコンテナーを取得します。
ソースアプリケーション
jvmアプリケーションが複数のファイルで構成されており、定期的/自動的にイメージを生成する必要がある場合、
com.spotifyプラグイン
docker-maven-pluginを使用してビルドプロセスをmavenに統合でき
ます 。 Gradleを使用する場合、
se.transmode.gradle:gradle-dockerは、
Dockerイメージの作成に役立ちます。
githubに投稿されたmavenの例。
この出版物では、中央の
Mavenリポジトリーの jarを使用してい
ます 。 これは独自のグルーブアセンブリです。これは、パッケージ化されたエーテルがGrapeの依存関係を解決し、java.net.URLの拡張プロトコルサポートを提供するために注目に値します。 心を探求するために:
Habréのgroovy-grape-aetherに関する記事 私にとって、これは私がよく使う便利なツールです。 例として、jvmエージェントを
実行中のJVMにロードし、crate.ioの
インストーラー 、
サイトパーサーの例...
groovy-grape-aetherが
docker suhorukov / docker-groovyイメージでも利用できるようになりました。 同様のイメージで、jvmアプリケーションをパッケージ化できます。
Dockerfile
既存のイメージに基づいて、およびどのコマンドを使用して新しいイメージを形成するかについて説明します。
frolvlad / alpine-oraclejdk8という画像を使用します
。frolのおかげです。 このイメージは、Alpine Linuxイメージ+ glibcおよびOracle JDK 8u102.14に基づいています。 debian / ubuntuベースの画像に比べて十分に
コンパクトです。 別の方法として、人気のある
anapsix / alpine-javaイメージが可能です。
FROM frolvlad/alpine-oraclejdk8 EXPOSE 8080 ENV GROOVY_VERSION=2.4.5.4 RUN mkdir "/usr/lib/groovy" && \ wget "http://repo1.maven.org/maven2/com/github/igor-suhorukov/groovy-grape-aether/$GROOVY_VERSION/groovy-grape-aether-$GROOVY_VERSION.jar" -O /usr/lib/groovy/groovy-grape-aether.jar ENTRYPOINT ["java","-jar","/usr/lib/groovy/groovy-grape-aether.jar"] CMD ["--help"]
ここでは、ポート8080がコンテナ内のアプリケーションをリッスンすることを示しました。 コンテナの起動時に、-Pパラメータを指定してホストマシンの動的ポートにバインドするか、または-pパラメータを指定して、コンテナポートに対応するホストポートを指定できます。
ENTRYPOINTは、コンテナの起動時に起動するパラメータ付きコマンドを決定します。 コマンドがCMDを使用してデフォルトのパラメーターを指定することは可能です。
画像をローカルで収集します
Dockerfileコマンドがある同じディレクトリで実行します
docker build -t docker-groovy .
hub.docker.comに公開する
オープンソースプロジェクトがなく、画像を全世界と共有する必要がない場合は、このセクションをスキップできます。
githubでDockerfileを公開する
githubアカウントで、New Repositoryを選択し、準備されたDockerfileをそこに配置します。 この例では、
docker-groovyリポジトリーを使用します。
hub.docker.comでアセンブリを構成します
hub.docker
メインページで
、フォームに必要事項
を入力し、[サインアップ]をクリックして、無料アカウントを作成します。 必ずメールでアクティベートしてください。
アカウント設定で、「リンクされたアカウントとサービス」タブに移動し、githubアカウントで「Link Github」を設定します(別のオプションはBitbucketアカウントです)。
ページ上部のメニューで、[作成]-> [自動ビルドの作成]を選択し、[自動ビルドGithubの作成]をクリックして、リポジトリを選択し、Dockerfileリポジトリの場所を指定します。 次回githubリポジトリにプッシュすると、ビルドが自動的に開始されます。 アセンブリを手動で開始することもできます。
上記のすべてのアクションの結果、
hub.docker.comにそのような
プロジェクトができました 。
コンテナのロードと使用
使用する前に、hub.dockerから画像を取得します。
docker pull suhorukov/docker-groovy
そして、gitblit.groovyスクリプトパラメーターを使用してコンテナーを実行します。
docker run -d -p 8080:8080 suhorukov/docker-groovy https://raw.githubusercontent.com/igor-suhorukov/git-configuration/master/gitblit.groovy
アプリケーションがファイルシステム内のコンテナの外部リソース(ホストマシンディレクトリ、NFS、分散ファイルシステム)にアクセスする必要がある場合、DockerfileのVOLUMEセクションでイメージを作成するときにマウントポイントを指定する必要があります。 コンテナの分散実行と調整が必要な場合-Kubernetes / Mesos / Swarm / fabric8.io / Rancherは、これに適した、Dockerで動作するテクノロジーです。
jvmアプリケーションの例を使用して、hub.docker.comでミニチュアイメージを作成して公開し、その後、アプリケーションパラメータを使用してdockerコンテナを起動しました。