经过上述的测试之后,我们就可以编写 docker-compose.yml 文件了,该文件的目的在于单个命令启动两个容器,同时将 docker run 所需要的内容写在一个文件当中,减少键入参数。( yaml 语法参考这里 )
文件编写
这里是前一节项目的 docker-compose.yml 参考示例。
version: '3.8' |
- (必要)version:指定 compose 是依据哪个版本制定的;
- image:指定容器运行的镜像;
- build:构建镜像相关内容;
- context:上下文路径
- dockerfile:Dockerfile文件名
- command:容器启动时自覆盖的命令;
- depends_on:依赖关系,例如启动 web 服务前需要启动 db 或者其他服务;
- env_file:从文件添加环境变量(可以是单个文件,也可以使用 yaml 列表涵盖多个文件)
- environment:添加环境变量。您可以使用数组或字典、任何布尔值,布尔值需要用引号引起来,以确保 YML 解析器不会将其转换为 True 或 False;
- expose:仅暴露端口,但不映射到宿主机;
- ports:将 docker 容器端口映射到宿主机端口;
- volumes:将主机的数据卷或着文件挂载到容器里;
- restart:容器重启策略(好像一般都是 restart )。
检查文件格式
通过docker config
校验compose文件,如果文件格式有问题,通过该命令可以帮你校验并输出错误信息。
一键启动
这里使用 docker-compose 命令来一键启动 docker 容器。在使用 docker-compose 之前,需要先安装 docker-compose 工具。参考链接
安装完成之后,使用以下指令就可以了。
# 常规指令 |
其中部分参数含义如下:
- docker-compose up:默认选用当前目录下 docker-compose.yml 进行容器编排;
- -f:指定 yml 文件;
- –build:构建我们的镜像;
总结
经过学习 docker 封装的流程,个人将其过程总结如下(应该也可以直接写 compose.yml 文件,保证不出错最好还是人工测试一遍呢):
手工测试:
-
主程序镜像制作及测试(Dockerfile 书写)
-
其他相关环境配置
-
容器网络配置及连接测试
自动化完成:
- 编写相应的 docker-compose.yml
这里一个好的讲解 docker-compose 的文档