[解決済み] Dockerイメージを1つのコンテナにまとめる方法はありますか?
質問
今、いくつかのDockerfilesを持っています。
1つはCassandra 3.5用で、これは
FROM cassandra:3.5
Kafka用のDockerfileもありますが、こちらはかなり複雑です。それは
FROM java:openjdk-8-fre
で、KafkaとZookeeperをインストールするための長いコマンドを実行します。
最後に、SBTを使用するScalaで書かれたアプリケーションを紹介します。
そのDockerfileに対して
FROM broadinstitute/scala-baseimage
これで、Java 8、Scala 2.11.7、STB 0.13.9が手に入りました。
おそらく、私はDockerの仕組みを理解していませんが、私のScalaプログラムにはCassandraとKafkaが依存関係にあり、開発目的のために、他の人が私のレポを単に
Dockerfile
そして、Cassandra、Kafka、Scala、Java、SBTがすべて組み込まれた状態でビルドできるようにすれば、ソースをコンパイルするだけでよいのです。しかし、これには多くの問題があります。
これらのDockerfileをどのように組み合わせればよいのでしょうか?また、それらを組み込んだ環境を簡単に作るにはどうしたらよいでしょうか?
どのように解決するのですか?
を使用することができます。 マルチステージビルド Docker 1.17で導入された機能
これを見てください。
FROM golang:1.7.3
WORKDIR /go/src/github.com/alexellis/href-counter/
RUN go get -d -v golang.org/x/net/html
COPY app.go .
RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o app .
FROM alpine:latest
RUN apk --no-cache add ca-certificates
WORKDIR /root/
COPY --from=0 /go/src/github.com/alexellis/href-counter/app .
CMD ["./app"]
その後、普通に画像を構築してください。
docker build -t alexellis2/href-counter:latest
から。 https://docs.docker.com/develop/develop-images/multistage-build/
<ブロッククオート最終的には、以前と同じ小さな本番用イメージになりますが、複雑さは大幅に軽減されます。中間イメージを作成する必要はなく、ローカルシステムにアーティファクトを抽出する必要も全くありません。
どのように動作するのですか?2番目のFROM命令は、alpine:latestイメージをベースにして、新しいビルドステージを開始します。COPY --from=0行は、前のステージからビルドされたアーティファクトだけをこの新しいステージにコピーします。Go SDKと中間成果物は残され、最終的なイメージには保存されません。
関連
-
docker学習用イメージの作成にdockerfileを使用した場合の落とし穴
-
[解決済み] Dockerコンテナの中から、マシンのローカルホストに接続するにはどうすればよいですか?
-
[解決済み] Docker Dockerコンテナからホストへのファイルコピー
-
[解決済み] ホストからDockerコンテナにファイルをコピーする方法は?
-
[解決済み] リポジトリを使用せずに、あるホストから別のホストにDockerイメージをコピーする方法
-
[解決済み] Dockerコンテナのシェルに入るにはどうしたらいいですか?
-
[解決済み] Dockerイメージはホストマシン上のどこに保存されていますか?
-
[解決済み] 古くて使われていないDockerイメージを削除する方法
-
[解決済み] Dockerイメージをコンテナとして実行する
-
[解決済み】Dockerイメージとコンテナの違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】apt-get でインストールしても docker コマンドが見つからない。
-
[解決済み】D-Bus接続の取得に失敗しました。操作が許可されていません
-
[解決済み] System.InvalidOperationException: Failed to deploy distro docker-desktop to C:\UserslenovaAppDataLocal╱distro: exit code: -1
-
[解決済み] Ansibleタスクのタイムアウトの最大長
-
[解決済み] dockerでCOPYするが、除外する
-
[解決済み] Dockerfileの "RUN chmod "が有効でない。
-
[解決済み] Dockerのエラーです。Cannot start service ...: ネットワーク 7808732465bd529e6f20e4071115218b2826f198f8cb10c3899de527c3b637e6 が見つかりませんでした。
-
[解決済み] 複数のディレクトリを1つのコマンドでコピーする
-
docker-composeによるmysqlのデプロイメントの実践
-
ドッカーコンテナの状態がExitと表示される(1)