version : '3' #Compose文件版本支持特定的Docker版本 services: #本工程的服务配置列表 swapping: #spring boot的服务名,服务名自定义 container_name: swapping-compose #本spring boot服务以后启动的容器实例的名字,若是指定,按照这个命名容器,若是未指定,容器命名规则是 #【[compose文件所在目录]_[服务名]_1】,例如【swappingdockercompose_swapping_1】 #若是多启动,也就是docker-compose scale swapping=3 mysql=2的话,就不须要指定容器名称,不然会报错 容器名重复存在的问题 build: #基于Dockerfile文件构建镜像时使用的属性 context: . #表明当前目录,也能够指定绝对路径[/path/test/Dockerfile]或相对路径[../test/Dockerfile],尽可能放在当前目录,便于管理 dockerfile: Dockerfile-swapping #指定Dockerfile文件名。若是context指定了文件名,这里就不用本属性了 ports: #影射端口属性 - "9666:9666" #建议使用字符串格式,指定宿主机端口映射到本容器的端口 volumes: #挂载属性 - .:/vol/development #挂载路径在compose配置文件中只能指定容器内的目录,而docker run命令能够指定[宿主机目录:容器内目录]的挂载方式。能够使用:ro对容器内目录设置只读,来保护宿主机的文件系统 depends_on: #本服务启动,须要依赖哪些别的服务 例如这里;mysql服务就会先于swapping服务启动。至于配置多个的话,depends_on内的多个依赖的启动前后顺序未测试过 - mysql links: #与depends_on相对应,上面控制启动顺序,这个控制容器链接问题。 - "mysql:mysql" #值能够是- mysql[- 服务名],也能够是- "mysql:mysql"[- "服务名:别名"] restart: always #是否随docker服务启动重启 networks: #加入指定网络 - my-network #自定义的网络名 environment: #environment 和 Dockerfile 中的 ENV 指令同样会把变量一直保存在镜像、容器中,相似 docker run -e 的效果。设置容器的环境变量 - TZ=Asia/Shanghai #这里设置容器的时区为亚洲上海,也就解决了容器经过compose编排启动的 时区问题!!!!解决了容器的时区问题!!! mysql: #服务名叫mysql,自定义 container_name: mysql-compose #容器名 image: mysql:5.7 #虽然没有使用build,但使用了image,指定基于mysql:5.7镜像为基础镜像来构建镜像。【使用build基于Dockerfile文件构建,Dockerfile文件中也有FROM基于基础镜像】 ports: - "33061:3306" command: [ #使用 command 能够覆盖容器启动后默认执行的命令 '--character-set-server=utf8mb4', #设置数据库表的数据集 '--collation-server=utf8mb4_unicode_ci', #设置数据库表的数据集 '--default-time-zone=+8:00' #设置mysql数据库的 时区问题!!!! 而不是设置容器的时区问题!!!! ] environment: MYSQL_DATABASE: swapping #设置初始的数据库名 MYSQL_ROOT_PASSWORD: 398023 #设置root链接密码 MYSQL_ROOT_HOST: '%' restart: always networks: - my-network networks: #关于compose中的networks的详细使用https://blog.csdn.net/Kiloveyousmile/article/details/79830810 my-network: #自定义的网络,会在第一次构建时候建立自定义网络,默认是bridge
此表显示哪些Compose文件版本支持特定的Docker版本。参考:https://docs.docker.com/compose/compose-file/html