尝试理解 DockerCompose (Docker Compose)
首先
你好。夏天已经完全来临了。我是ponponnsan。
好吧,今天我想要更深入地了解一下docker compose,就在某种氛围中稍微接触了一下它。
以下是我参考的书籍。非常易懂,强烈推荐。真不愧是亚马逊畅销书。
Docker Compose 是什么?
写Docker命令一个个地都写下来真是麻烦啊。
Docker Compose可以将与构建相关的命令内容写入一个yaml文件中,然后一次性执行,停止或销毁。
Dockerfile与之间的不同是什么? (What is the difference between Dockerfile and [something]?)
Docker Compose: 是「docker run」的集合体,除了创建容器外,还可以创建网络和卷等。
Dockerfile: 用于创建镜像,不能创建网络和卷等。
*音量… 像是将存储空间划分出一部分的东西。好比把长长的蛋糕切成一块一样的形象。
docker-compose.yaml的写法
# バージョンを書く
version: '3'
# コンテナの情報
services:
mySqlService:
image: mysql:5.7
# macはこれがないと動かなかった。
# M1のCPUは、linux/arm64/v8だが、使用しようとしたimageがこれに対応していない
# platformを指定して、linux/amd64に指定をする
platform: linux/amd64
networks:
- myNetwork
volumes:
- mySqlVolume:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: myrootpass
MYSQL_DATABASE: myDb
MYSQL_USER: myUser
MYSQL_PASSWORD: myPass
wordpressService:
depends_on:
- mySqlService
image: wordpress
networks:
- myNetwork
volumes:
- wordpressVolume:/var/www/html
ports:
- 8085:80
restart: always
environment:
WORDPRESS_DB_HOST: mySqlService
WORDPRESS_DB_NAME: myDb
WORDPRESS_DB_USER: myUser
WORDPRESS_DB_PASSWORD: myPass
# ネットワークの情報
networks:
myNetwork:
# ボリュームの情報
volumes:
mySqlVolume:
wordpressVolume:
定义文件的编写规则
-
- 最初にDocker Composeのバージョンを書く
-
- 「services」「networks」「volumes」の順に書く
-
- 親子関係はスペースで字下げして表す
-
- 名前は、大項目の下に字下げして書く
-
- コンテナの設定内容は名前の下に字下げして書く
-
- 「-」が入っていたら複数指定できる
-
- 名前の後ろには「:」をつける
-
- 「:」の後ろには、空白が必要
-
- コメントアウトが使える
- 文字列はシングルクォートかダブルクォート
未来的挑战
-
- ボリュームマウントとバインドマウントの違い
- ネットワークの設定の仕方