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;"" 命令。