yaml 規則
docker-compose.yaml 是 Compose 的核心,我們們一定要學會 yaml 編寫的規則
當然,我們們還是檢視官方文件,compose 部分
yaml 檔案的結構分為三層:
- version
版本號
- services
服務名
- 其他配置,如網路,掛載等公共的東西
version:'' # 版本號
services:
伺服器1 web:
當前服務的配置,這個部分就可以和DockerFile 寫的差不多了
build
depends_on
...
服務2 redis:
...
服務n mongodb:
network:
volume:
...
其他配置
上面說的到版本號在哪裡找呢?
進入 dockerhub 網頁,docs.docker.com/compose/compose-fi...
官網上的這些都是可以使用的版本,如官網給出的例子:
version: "3.9"
services:
redis:
image: redis:alpine
ports:
- "6379"
networks:
- frontend
deploy:
replicas: 2
update_config:
parallelism: 2
delay: 10s
restart_policy:
condition: on-failure
...
networks:
frontend:
backend:
volumes:
db-data:
services 和 其他命令都可以寫什麼呢?
services 下面可以寫的命令非常的多,文件上也講的非常的詳細
- Service configuration reference
- build # 構建容器的路徑
- context # 指定dockerfile 的路徑 或者 git儲存庫的url
- dockerfile # 指定 dockerfile 檔案
- args # 新增構建的引數
- cache_from # 快取解析的映象列表
- labels # 新增後設資料,我們也可以使用陣列或者是字典
- network # 定義網路
- shm_size # 設定構建映象的分割槽大小
/dev/shm
,例如 shm_size: ‘2gb’ - target # 指定構建的作用,例如 prod,test,dev
- cap_add, cap_drop # 新增或刪除容器的功能
- cgroup_parent # 指定一個可選的父容器組
- command # 覆蓋預設命令
- configs # 授予服務配置訪問許可權
- container_name # 指定容器名
- credential_spec
- depends_on # 指定依賴的服務
- deploy # 指定與服務的部署和執行相關的配置
- devices # 裝置對映列表
- dns # dns 配置,配置 ip
- dns_search # dns 配置,配置域名
- entrypoint # 指定命令,可追加
- env_file # 從檔案中新增環境變數
- environment # 新增環境變數
- expose # 暴露埠
- external_links # 與外部容器的連結
- extra_hosts # 額外的主機對映
- healthcheck # 心跳檢測
- image # 指定映象
- init
- isolation
- labels
- links
- logging
- network_mode
- networks
- pid
- ports
- profiles
- restart
- secrets
- security_opt
- stop_grace_period
- stop_signal
- sysctls
- tmpfs
- ulimits
- userns_mode
- volumes
- domainname, hostname, ipc, mac_address, privileged, read_only, shm_size, stdin_open, tty, user, working_dir
- build # 構建容器的路徑
- Specifying durations
- Specifying byte values
- Volume configuration reference
- Network configuration reference
如上命令還是非常的多,我們一下子肯定也是記不住的,需要我們慢慢去熟悉,用的多了,寫的多了,看得多了,知識慢慢的也根深蒂固了
我們們學習的方法有:
- 多看官方文件,看官網的例子
- 看開源專案,看看別人的 docker-compose.yaml 是如何編寫的
實戰-搭建 wp 部落格
我們們來使用 docker-compose.yaml 的方式來搭建我們的個人部落格,感受一下一鍵部署的魅力
建立工作目錄
mkdir my_wordpress
cd my_wordpress
編寫我們的 docker-compose.yaml 檔案
version: "3.9"
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
volumes:
- wordpress_data:/var/www/html
ports:
- "8888:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress
volumes:
db_data: {}
wordpress_data: {}
解釋一下 docker-compose.yaml 檔案的含義:
- 安裝了 2 個服務,一個是 db mysql,一個是 wordpress 服務
- 資料庫服務
- mysql 使用的映象是 mysql:5.7
- 掛載是掛到
/var/lib/mysql
,預設使用的是具名掛載,所有會掛載到宿主機的這個路徑/var/lib/docker/volumes/my_wordpress_db_data/_data
- 設定 mysql 相關的環境變數
- wordpress 服務
- 依賴資料庫服務
- 用的映象是 wordpress:latest
- 掛載卷是
/var/www/html
,會掛載到我們宿主記得這個目錄/var/lib/docker/volumes/my_wordpress_wordpress_data/_data
- 設定埠,將宿主記得 8888 埠對映到容器的 80 埠
- 設定 wordpress 相關的環境變數
docker-compose up 一鍵部署服務並啟動
在工作目錄執行如下指令一鍵部署服務
#docker-compose up
我們也可以在讓服務在後臺啟動
#docker-compose up -d
啟動之後我們可以看到程式先去建立網路,建立對應的掛載卷
開始建立並啟動對應的容器
- my_wordpress_db_1
- my_wordpress_wordpress_1
檢視一下部落格搭建的效果
我們可以訪問部落格地址:伺服器的IP:8888
nice,使用docker-compose.yaml 搭建個人的 wordpress 部落格成功!!!
wordpress 的介面是這個樣子的,裡面的功能很多,直接就在頁面上定製化我們自己的頁面,非常方便,xdm 可以嘗試一波,不虧
參考資料
歡迎點贊,關注,收藏
朋友們,你的支援和鼓勵,是我堅持分享,提高質量的動力
好了,本次就到這裡
技術是開放的,我們的心態,更應是開放的。擁抱變化,向陽而生,努力向前行。
我是小魔童哪吒,歡迎點贊關注收藏,下次見~
本作品採用《CC 協議》,轉載必須註明作者和本文連結