分类: Docker 发表时间: 2019年10月24日

标题: Docker compose配置文件简单介绍

摘要: 简单整理一下docker compose配置的简单姿势

官方文档

https://docs.docker.com/compose/compose-file/,本篇文章仅记录通过docker compose配置启动自定义镜像,更完整的内容请参考官方文档

创建自定义网络

随着docker将links选项标记为已废弃,docker官方更加推荐使用用户自定义网络来实现内部容器间的网络通信。创建自定义网络很简单,只需添加一个顶级选项networks,该选项下是所有自定网络的配置,示例

  1. version: "3.7"
  2. networkds:
  3. custom-network-one:
  4. custom-network-two:
  5. ipam:
  6. config:
  7. - subnet: 172.21.0.0/24

只声明而不需要具体配置自定义网络时,只需要像上例中custom-network-one网络一样,不配置任何子选项即可

其它配置示例:

配置驱动类型

  1. version: "3.7"
  2. networkds:
  3. custom-network-one:
  4. driver: bridge

配置子网地址段

  1. version: "3.7"
  2. networkds:
  3. custom-network-two:
  4. ipam:
  5. config:
  6. - subnet: 172.21.0.0/24

参考文档:https://docs.docker.com/compose/compose-file/#network-configuration-reference

配置services

一个service既是一个要启动的容器,顶级选项services用来声明service配置,示例

  1. version: "3.7"
  2. services:
  3. nginx:
  4. image: nginx:1.17
  5. depends_on:
  6. - php
  7. volumes:
  8. - /etc/nginx/conf.d:/etc/nginx/conf.d
  9. - /var/www:/var/www
  10. ports:
  11. - 80:80
  12. - 8000:8000
  13. networks:
  14. - custom-network-one
  15. - custom-network-two
  16. php:
  17. image: php:7.3-fpm
  18. depends_on:
  19. - mysql
  20. volumes:
  21. - /var/www:/var/www
  22. ports:
  23. - 9000:9000
  24. networks:
  25. custom-network-one:
  26. aliases:
  27. - node1.php.host
  28. custom-network-two:
  29. aliases:
  30. - node1.php.host
  31. mysql:
  32. image: mysql:5.7
  33. volumes:
  34. - /var/data/mysql/node-mysql-57:/var/lib/mysql
  35. ports:
  36. - 3306:3306
  37. networks:
  38. - custom-network-one
  39. environment:
  40. 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参数