docker-compose脚本编写关键词详解
docker-compose脚本编写高频关键词(一)
此处关键词应该必须能灵活运用
关键词 | 解释 | 例子 |
version | 定义使用的docker-compose文件版本。较新的版本支持更丰富的功能和选项。 | version: '3.8' |
services | 定义应用程序的各个服务及其配置。每个服务通常对应一个容器。 | services: web:<br> image: nginx<br> ports:<br> - "8080:80" |
image | 指定服务所使用的镜像名称。 | image: nginx |
ports | 将容器内部的端口映射到主机上的端口。 | ports:<br> - "8080:80" |
volumes | 将主机上的目录或文件挂载到容器内部。用于持久化存储数据。 | volumes:<br> - /path/on/host:/path/in/container |
environment | 设置容器的环境变量。 | environment:<br> MYSQL_ROOT_PASSWORD: example |
networks | 定义容器所属的网络。 | networks:<br> - backend |
depends_on | 定义服务之间的依赖关系。确保某个服务在另一个服务启动之前启动。 | depends_on:<br> - database |
restart | 定义容器退出后的重启策略。 | restart: always |
docker-compose脚本编写关键词(二)
这些关键词可以根据你的应用程序需求来定制docker-compose文件,提供更多的灵活性和扩展性。它们包括构建镜像、命令定义、服务链接、端口暴露、网络连接、卷共享、健康检查、部署配置、日志记录、配置文件和机密等方面的功能。
关键词 | 解释 | 示例 |
build | 定义构建镜像所需的Dockerfile路径或构建上下文。 | build: ./app |
command | 指定容器启动时要执行的命令。 | command: python app.py |
links | 将服务链接到另一个服务。 | links:<br> - db |
expose | 暴露容器的端口给连接的服务或主机。 | expose:<br> - 8080 |
networks | 定义容器要连接到的网络。 | networks:<br> - frontend<br> - backend |
volumes_from | 共享另一个服务的卷。 | volumes_from:<br> - service_name |
external_links | 将服务链接到docker-compose文件外的容器。 | external_links:<br> - container_name |
healthcheck | 定义容器的健康检查配置。 | healthcheck:<br> test: ["CMD", "curl", "-f", "http://localhost "] |
deploy | 定义服务的部署配置,如副本数、更新策略等。 | deploy:<br> mode: replicated<br> replicas: 3 |
logging | 定义服务的日志记录配置。 | logging:<br> driver: syslog |
configs | 指定配置文件以供服务使用。 | configs:<br> - myconfig |
secrets | 指定使用的加密机密。 | secrets:<br> - mysecret |
docker-compose脚本编写关键词(三)
这些关键词可以帮助你更精细地配置和管理docker-compose文件中的容器,例如指定用户、工作目录,覆盖入口点,设置停止信号等。这些功能可以满足对容器化应用程序更高级的需求,使得容器的运行环境更加灵活和定制化。
关键词 | 解释 | 示例 |
tty | 分配一个伪终端设备给容器。 | tty: true |
stdin_open | 打开标准输入流,允许在容器内部交互。 | stdin_open: true |
user | 指定容器的运行用户。 | user: "1000:1000" |
working_dir | 指定容器的工作目录。 | working_dir: /app |
entrypoint | 覆盖容器默认的入口点。 | entrypoint: /app/entrypoint.sh |
stop_signal | 指定发送给容器的停止信号。 | stop_signal: SIGTERM |
domainname | 容器的域名。 | domainname: example.com |
hostname | 容器的主机名。 | hostname: my-container |
ipc | 共享容器间的IPC命名空间。 | ipc: shareable |
privileged | 授予容器特权访问主机系统。 | privileged: true |
shm_size | 指定容器的共享内存大小。 | shm_size: 256M |
tmpfs | 将临时文件系统挂载到容器内部。 | tmpfs:<br> - /run<br> - /tmp |