DockerfileとDockerイメージのビルド
例
Dockerfile
Dockerfileリファレンス — Docker-docs-ja 24.0ドキュメント
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | |
イメージのビルドを高速化する
Dockerはイメージのビルドを高速化するために、COPYやRUNなどの命令をレイヤーとしてキャッシュし、レイヤーが変更されたときだけ以降のレイヤーを再実行する。
このため結果が変わりにくい命令を先に実行するように記述すればイメージの作成を高速化できる。
例えばソースコードのコピーと依存するパッケージをインストールは依存するパッケージのインストールを先に済ませたほうが良い。
ソースコードはパッケージの依存先に比べて変わりやすいので、ソースコードのコピーを先に実行してしまうと、ソースコードを変更するたびにパッケージのインストールを再実行することになってしまう。
1 2 3 4 5 6 7 8 9 10 11 | |
docker-compose.yml
Dockerイメージのビルド
1 2 3 | |
トラブルシューティング
設定が反映されない、正しく動作しない
初回起動時はコンテナのビルドが必要なのでdocker-compose up --buildで起動する。(以降は--buildはいらない)
Docker Composeでサービス間で通信できない
localhostのハードコーディングを見直す
コンテナ内においてlocalhostはコンテナを動作させているマシンではなくコンテナ自身を指す。
別のコンテナのURLを定義する場合は、localhostではなくdocker-compose.ymlで定義したサービス名を使用する。
ポート設定を見直す
サービス間で通信するときのポートはホストにマッピングしたポートではなくコンテナ側のポートになるので注意すること。