Docker¶
開発時の注意¶
- 当たり前のことをきちんとやる
docker compose upのログをきちんと見て問題を一つずつ潰すdocker psでどのコンテナが立ち上がっているか確認する- M1 MacのDockerでそもそもMySQLのコンテナが起動していなかったことがある
Dockerfile¶
prod/dev切り替え¶
- URL
Dockerfile.prodとDockerfile.devを作るdocker composeを使うならdocker-compose-prod.yamlとdocker-compose-dev.yamlを作るyamlの中で.prodと.devを適切に呼び分ける- コンテナの作成・起動でもファイルを指定する
1 2 | |
更新が反映されない¶
- URL
- 次のコマンドでビルドし直す
1 2 | |
ベストプラクティスTop20: 2021¶
マルチステージビルドによるprod/dev切り替え¶
- URL
- 次のような
Dockerfileを作ればよい
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
マルチステージビルド時のdocker実行¶
- 下記の
razorpagesは何でもよい.
1 2 | |
dokcer¶
build M1 Macでx86_64ビルドする¶
1 2 3 4 5 6 | |
Linuxコンテナにログインする¶
1 | |
- 次のコマンドでもコンテナにログインできる
1 | |
イメージからコンテナを実行¶
1 | |
稼働中のコンテナでコマンドを発行¶
1 2 | |
コンテナ情報の確認¶
1 2 | |
コンテナを実行¶
1 | |
コンテナの削除¶
1 2 | |
コンテナをビルド: タグつき¶
.はカレントディレクトリのDockerfileを使うという意味.
1 | |
docker compose¶
run/up/build/createの違い¶
| コマンド | 処理内容 | 備考 |
|---|---|---|
| run | イメージ・コンテナを作成・起動 | 1つのサービスだけ |
| (1つのサービスに対して1つのコマンドだけ) | ||
| up | イメージ・コンテナを作成・起動 | depends_onやlinksで紐づいているコンテナもまとめて起動 |
| build | イメージ作成 | – |
| create | コンテナ作成 | – |
基本コマンド¶
1 2 3 4 5 6 | |
Docker Network not Found¶
- URL
docker-compose up --force-recreateで治ったことがある
MySQLでテスト用にデータベースを複数生成する¶
- 参考
initスクリプトを使う
MySQLの起動を待つ¶
- 参考
- 起動を待つ側の
depends_onにcondition: service_healthyをつける - データベース側では次のようなヘルスチェック設定をつける
1 2 3 4 5 6 | |
nginx+node.js(express)+mysql(prisma)連携の参考¶
nginx+node.jsの連携¶
- nginx+nodejs+mongodbのネットワーク連携:三つのコンテナがある場合のnginx+nodejsの連携部分で参考にした
- nginxに
depends_onを追加 - 不要ならnetworksを削除
複数のデータベースを作る¶
コンテナをリビルドする¶
1 | |
コンテナにログインする¶
- URL
docker psで立ち上がっているコンテナを調べるNamesの値を調べるdocker exec -it <container-name> /bin/bashでログインできる
ビルド時に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 | |
ローカル開発用にメールサーバーを立てる¶
- MailCatcher
1025ポートあてにメールを送ると1080ポートに立ったサイトでメールが確認できる
1 2 3 4 5 6 7 8 | |
1 | |