什么是 docker-compose
在 Docker 把容器技术大众化之后,Docker 周边涌现出了数不胜数的扩展、增强产品,其中有一个名字叫“Fig”的小项目格外令人瞩目。
Fig 为 Docker 引入了“容器编排”的概念,使用 YAML 来定义容器的启动参数、先后顺序和依赖关系,让用户不再有 Docker 冗长命令行的烦恼,第一次见识到了“声明式”的威力。
Docker 公司也很快意识到了 Fig 这个小工具的价值,于是就在 2014 年 7 月把它买了下来,集成进 Docker 内部,然后改名成了docker-compose
。
如何使用 docker-compose
安装
1 2 3 4 5 6 7 8 9 10
| # intel x86_64 sudo curl -SL https://github.com/docker/compose/releases/download/v2.6.1/docker-compose-linux-x86_64 \ -o /usr/local/bin/docker-compose
# apple m1 sudo curl -SL https://github.com/docker/compose/releases/download/v2.6.1/docker-compose-linux-aarch64 \ -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
|
编写 YAML 文件
docker-compose 里管理容器的核心概念是service。
docker-compose 里的service就是一个容器化的应用程序,通常是一个后台服务,用 YAML 定义这些容器的参数和相互之间的关系。
下面来编写一个简单的dc-nginx.yml
文件,用于启动一个nginx
容器
1 2 3 4 5 6 7
| services: registry: image: nginx container_name: nginx restart: always ports: - 80:80
|
执行
1 2 3 4 5 6 7
| # 不加-f,默认是目录下的docker-compose.yml $ docker-compose -f dc-nginx.yml up -d [+] Running 8/8 # 查看容器 $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 61584a254a15 nginx "/docker-entrypoint.…" 8 seconds ago Up 5 seconds 0.0.0.0:80->80/tcp, :::80->80/tcp nginx
|
使用 docker-compose 搭建 WordPress 网站
在空目录下新建dc-wp.yml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
| volumes: maria_data: {}
services: mariadb: image: mariadb:10 container_name: mariadb restart: always environment: MARIADB_DATABASE: db MARIADB_USER: wp MARIADB_PASSWORD: 123 MARIADB_ROOT_PASSWORD: 123 volumes: - maria_data:/var/lib/mysql
wordpress: image: wordpress:5 container_name: wordpress restart: always
environment: WORDPRESS_DB_HOST: mariadb WORDPRESS_DB_USER: wp WORDPRESS_DB_PASSWORD: 123 WORDPRESS_DB_NAME: db
depends_on: - mariadb
nginx: image: nginx:alpine container_name: nginx hostname: nginx restart: always ports: - 80:80 volumes: - ./wp.conf:/etc/nginx/conf.d/default.conf
depends_on: - wordpress
|
配置文件wp.conf
1 2 3 4 5 6 7 8 9 10 11 12
| server { listen 80; default_type text/html;
location / { proxy_http_version 1.1; proxy_set_header Host $host;
#proxy_pass http://172.20.0.110; proxy_pass http://wordpress; } }
|
执行
1
| $ docker-compose -f dc-wp.yml up -d
|
查看容器状态
至此完成了WordPress
的搭建。
链接