Docker¶
Dockerfile prod/dev切り替え¶
- URL
Dockerfile.prod
とDockerfile.dev
を作るdocker compose
を使うならdocker-compose-prod.yaml
とdocker-compose-dev.yaml
を作るyaml
の中で.prod
と.dev
を適切に呼び分ける- コンテナの作成・起動でもファイルを指定する
1 2 |
|
Dockerfile 更新が反映されない¶
- URL
- 次のコマンドでビルドし直す
1 2 |
|
Dockerfile ベストプラクティスTop20: 2021¶
Dockerfile マルチステージビルドによるprod
/dev
切り替え¶
- URL
- 次のような
Dockerfile
を作ればよい
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
docker compose run/up/build/createの違い¶
コマンド | 処理内容 | 備考 |
---|---|---|
run | イメージ・コンテナを作成・起動 | 1つのサービスだけ |
(1つのサービスに対して1つのコマンドだけ) | ||
up | イメージ・コンテナを作成・起動 | depends_onやlinksで紐づいているコンテナもまとめて起動 |
build | イメージ作成 | – |
create | コンテナ作成 | – |
docker compose 基本コマンド¶
1 2 3 4 5 6 |
|
docker compose Docker Network not Found¶
- URL
docker-compose up --force-recreate
で治ったことがある
docker compose MySQLでテスト用にデータベースを複数生成する¶
- 参考
init
スクリプトを使う
docker compose MySQLの起動を待つ¶
- 参考
- 起動を待つ側の
depends_on
にcondition: service_healthy
をつける - データベース側では次のようなヘルスチェック設定をつける
1 2 3 4 5 6 |
|
docker compose nginx+node.js(express)+mysql(prisma)連携の参考¶
docker compose nginx+node.jsの連携¶
- nginx+nodejs+mongodbのネットワーク連携:三つのコンテナがある場合のnginx+nodejsの連携部分で参考にした
- nginxに
depends_on
を追加 - 不要ならnetworksを削除
docker compose 複数のデータベースを作る¶
docker compose コンテナをリビルドする¶
1 |
|
開発時の注意¶
- 当たり前のことをきちんとやる
docker compose up
のログをきちんと見て問題を一つずつ潰すdocker ps
でどのコンテナが立ち上がっているか確認する- M1 MacのDockerでそもそもMySQLのコンテナが起動していなかったことがある
ビルド時にno matching manifest for linux/arm64/v8 in the manifest list entries
¶
- URL
- M1 Macでの問題: M1のCPUはlinux/arm64/v8で使おうとしたimageがこれに対応していない
docker-compose.yml
を適切に修正
1 2 3 4 5 6 7 8 9 10 |
|