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 |
|