前言
本章内容主要涉及内容:
- 在使用Docker-compose时用到的Dockerfile和Docker-compose.yml这两文件应该如何编写。
- 我在自己学习摸索的时候搜索过很多相关Dockerfile和Docker-compose.yml这两个文件编写的文章,基本上都都是没有比较详细的作用解释的,走了很多弯路,系统这篇文章可以帮助到有需要的人。
- 本章内容不是专业性的学术研究,而是近期自己使用学习Docker得到的经验分享。
- 有误的地方可以在评论告知,好让我进行更正。
Docker-compose.yml
Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。
注意:这里的YML文件的语法与编程语法不同,区别在于缩进的层级、数据类型、对象、等等,尤其一点,“冒号后面一定要加一个空格”最好在写之前去看一遍YML教程,了解一下有哪些语法特点。
另外除了以下例子举例的几种参数,还有很多的参数可以进行添加和设置,可以自己到docker官网进行查找。
例子1
version: "3.1" #指定本 yml 依从的 compose 哪个版本制定的。
services: #服务
# Python3
python_app: # 指定这个服务名叫做python_app
container_name: myapp # 指定创建的容器名是myapp
build: . # 指定从哪个位置去寻找Dockerfile文件进行程序环境构建
image: python:3.9 # 使用的镜像版本
tty: true # 后台模式,这个设置下可以进入命令行进行操作
volumes: # 挂载一个目录到容器内的某位置下
- .:/Demo # 这样写的意思是从宿主机的.目录【当前目录】挂载到容器内的 工作目录/Demo目录
# 比如工作目录是bin目录,那么就会在容器内的bin目录下新建一个Demo目录,
# 在容器内的这个Demo目录下进行文件的添加或者修改之后,都会保存在宿主机的.目录上【即当前目录】。
# 宿主机:如果是在Windows10系统上使用Docker,那么宿主机就是Windows10系统本身
例子2
version: "3.1" #指定本 yml 依从的 compose 哪个版本制定的。
services: #服务
# MySQL5.7
mysql_01:
# 指定这个服务名叫mysql_01,如果在容器间需要进行连接可以直接使用mysql_01,进行服务之间的连接
# 相当于就是 127.0.0.1
image: mysql:5.7 # 指定的镜像是mysql 5.7
environment: # 配置环境变量
- MYSQL_ROOT_PASSWORD=root
ports:# 配置端口映射【宿主机端口:容器内部端口】
- "3306:3306"
command: [
'--character-set-server=utf8mb4',
'--collation-server=utf8mb4_unicode_ci'
]# 配置服务命令,这里面的命令是mysql数据库的命令,设置支持中文的编码
Dockerfile
Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。并且Dockerfile这个名字是Docker默认配置读取的,不能随意改动。
Dockerfile文件只有在服务设置了build参数后才能找到正确的位置进行读取的,比如以下案例1对应Docker-compose.yml的案例1,build:. 表示从当前目录下找到Dockerfile文件读取构建
例子1
FROM python:3.9 # 使用的镜像是python3.9
COPY . ./C4_Demo
# 复制宿主机当前目录下的所有文件[.] 到容器./C4_Demo目录下[容器内工作目录下的C4_Demo目录]
WORKDIR /C4_Demo # 将工作目录切换至 C4_Demo 目录
RUN pip install -r requirements.txt # 执行命令
# 就是在容器内输入命令行 pip install -r requirements.txt
# RUN ["pip", "install","-r", "requirements.txt"] 等价于
# RUN pip install -r requirements.txt
CMD ["python","sensitive_filtration.py"] # 执行命令运行程序
# 这里面的引号必须是双引号
# 就是在容器内输入命令 python sensitive_filtration.py 用于运行程序
CMD 在docker run 时运行。
RUN 是在 docker build。
并且在 [ ]内的引号必须是双引号
END
使用Docker-compose知道这些基本的语法就可以构建一个简单的小Demo环境了,至于其他更多的环境设置可以去官网查找详细文档说明。
版权声明:本文为xyl192960原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。