docker compose 文件常用参数

2023-03-26 16:50:33 浏览数 (1)

Docker Compose 是一个用于定义和运行 Docker 容器应用程序的工具,它允许你使用 YAML 文件来定义多个容器、它们之间的关系和它们的配置。在 Docker Compose 文件中,有很多常用参数可以帮助你定义和管理容器应用程序,下面是一些常用参数的详细说明。

version

version 参数指定 Docker Compose 文件的版本号,它定义了可以使用哪些参数和功能。当前最新版本是 3,可以使用的参数和功能相对较多。

services

services 参数是 Docker Compose 文件的核心,它定义了应用程序的各个服务。每个服务都是一个容器,并且可以有自己的配置和环境变量。在 services 参数下,可以定义多个服务,并为每个服务指定一个名称。例如:

代码语言:javascript复制
yamlCopy codeservices:
  web:
    image: nginx:latest
    ports:
      - "8080:80"
  db:
    image: postgres:latest
    environment:
      POSTGRES_PASSWORD: mysecretpassword

上面的例子中,定义了两个服务:web 和 db。web 服务使用 nginx 镜像,将主机的 8080 端口映射到容器的 80 端口;db 服务使用 postgres 镜像,并设置了一个环境变量。

image

image 参数指定容器使用的镜像。可以使用 Docker Hub 上的公共镜像,也可以使用自己构建的镜像。例如:

代码语言:javascript复制
yamlCopy codeservices:
  web:
    image: nginx:latest

上面的例子中,web 服务使用了最新的 nginx 镜像。

ports

ports 参数指定容器与主机之间的端口映射关系。语法为 "主机端口:容器端口"。例如:

代码语言:javascript复制
yamlCopy codeservices:
  web:
    image: nginx:latest
    ports:
      - "8080:80"

上面的例子中,将主机的 8080 端口映射到容器的 80 端口。

volumes

volumes 参数指定容器与主机之间的文件映射关系。可以将主机上的目录或文件挂载到容器中,或将容器中的目录或文件挂载到主机上。例如:

代码语言:javascript复制
rubyCopy codeservices:
  web:
    image: nginx:latest
    volumes:
      - /var/www:/usr/share/nginx/html

上面的例子中,将主机上的 /var/www 目录挂载到容器中的 /usr/share/nginx/html 目录。

environment

environment 参数指定容器中的环境变量。例如:

代码语言:javascript复制
yamlCopy codeservices:
  db:
    image: postgres:latest
    environment:
      POSTGRES_PASSWORD: mysecretpassword

上面的例子中,设置了一个名为 POSTGRES_PASSWORD 的环境变量。restart

restart 参数指定容器的重启策略。可以指定容器退出后自动重启的次数、延迟时间和重启方式。例如:

代码语言:javascript复制
yamlCopy codeservices:
  web:
    image: nginx:latest
    restart: always

上面的例子中,将容器设置为永远自动重启。

depends_on

depends_on 参数指定容器之间的依赖关系。例如:

代码语言:javascript复制
yamlCopy codeservices:
  web:
    image: nginx:latest
    depends_on:
      - db
  db:
    image: postgres:latest

上面的例子中,web 服务依赖于 db 服务,即 db 服务必须先启动,web 服务才能启动。

networks

networks 参数指定容器使用的网络。可以创建自定义网络,并将容器添加到该网络中。例如:

代码语言:javascript复制
yamlCopy codenetworks:
  app_net:
services:
  web:
    image: nginx:latest
    networks:
      - app_net
  db:
    image: postgres:latest
    networks:
      - app_net

上面的例子中,创建了一个名为 app_net 的自定义网络,并将 web 和 db 服务添加到该网络中。

command

command 参数指定容器启动时要执行的命令。例如:

代码语言:javascript复制
yamlCopy codeservices:
  web:
    image: nginx:latest
    command: nginx -g "daemon off;"

上面的例子中,容器启动时会执行 "nginx -g "daemon off;"" 命令。

0 人点赞