Docker-compose——Dockerfile和Docker-compose.yml

前言

本章内容主要涉及内容:

  1. 在使用Docker-compose时用到的Dockerfile和Docker-compose.yml这两文件应该如何编写。
  2. 我在自己学习摸索的时候搜索过很多相关Dockerfile和Docker-compose.yml这两个文件编写的文章,基本上都都是没有比较详细的作用解释的,走了很多弯路,系统这篇文章可以帮助到有需要的人。
  3. 本章内容不是专业性的学术研究,而是近期自己使用学习Docker得到的经验分享。
  4. 有误的地方可以在评论告知,好让我进行更正。

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环境了,至于其他更多的环境设置可以去官网查找详细文档说明。

你可能感兴趣的:(Docker,docker,docker-compose)