https://docs.docker.com/compose/compose-file/,本篇文章仅记录通过docker compose配置启动自定义镜像,更完整的内容请参考官方文档
随着docker将links
选项标记为已废弃,docker官方更加推荐使用用户自定义网络来实现内部容器间的网络通信。创建自定义网络很简单,只需添加一个顶级选项networks
,该选项下是所有自定网络的配置,示例
version: "3.7"
networkds:
custom-network-one:
custom-network-two:
ipam:
config:
- subnet: 172.21.0.0/24
只声明而不需要具体配置自定义网络时,只需要像上例中custom-network-one
网络一样,不配置任何子选项即可
其它配置示例:
配置驱动类型
version: "3.7"
networkds:
custom-network-one:
driver: bridge
配置子网地址段
version: "3.7"
networkds:
custom-network-two:
ipam:
config:
- subnet: 172.21.0.0/24
参考文档:https://docs.docker.com/compose/compose-file/#network-configuration-reference
一个service既是一个要启动的容器,顶级选项services
用来声明service配置,示例
version: "3.7"
services:
nginx:
image: nginx:1.17
depends_on:
- php
volumes:
- /etc/nginx/conf.d:/etc/nginx/conf.d
- /var/www:/var/www
ports:
- 80:80
- 8000:8000
networks:
- custom-network-one
- custom-network-two
php:
image: php:7.3-fpm
depends_on:
- mysql
volumes:
- /var/www:/var/www
ports:
- 9000:9000
networks:
custom-network-one:
aliases:
- node1.php.host
custom-network-two:
aliases:
- node1.php.host
mysql:
image: mysql:5.7
volumes:
- /var/data/mysql/node-mysql-57:/var/lib/mysql
ports:
- 3306:3306
networks:
- custom-network-one
environment:
MYSQL_ROOT_PASSWORD: 123456
声明容器之间的启动依赖可以使用depends_on
选项指定
声明挂载数据目录通过volumes
选项来设置,该选项的配置与docker run
命令中的-v
参数一致
声明端口映射通过prots
选项设置,该选项的配置与docker run
命令的-p
参数一致
声明网络配置通过选项networks
配置,该选项可以给出一个所加入的所有网络的列表,也可以给出带有具体配置的每个网络的字典,网络声明中的aliases
子选项可以对该容器设定自定义的host,在同一个网络内,其他容器可以通过php
容器名或node1.php.host
自定义host来访问该php容器
声明容器的环境变量可以通过environment
选项来配置,该配置等同于docker run
命令中的-e
参数