赞
踩
Docker Compose 是一个用于定义和运行多个 Docker 容器的工具,通过使用简单的 YAML 文件来配置应用程序的服务、网络和卷等。
使用 Docker Compose 可以方便地定义和管理容器化应用程序的服务栈。在配置文件中,你可以指定各个服务所需的镜像、环境变量、端口映射、数据卷挂载等信息。通过一次性执行 docker-compose up
命令,Docker Compose 将会自动下载所需的镜像,并启动所有服务。此外,还可以使用 docker-compose down
命令停止服务并清理容器。
使用 Docker Compose 的好处是,它使得部署和管理多个容器变得简单而高效。你可以将整个应用程序的服务定义放在一个文件中,便于版本控制和共享。同时,通过 Docker Compose,你可以轻松部署一致性的开发、测试和生产环境,减少因环境差异而造成的问题。
version
: 指定 Docker Compose 文件的版本。例如,version: '3'
表示使用 Docker Compose 文件格式的版本 3。
services
: 定义各个服务。在这个部分中,你可以为每个服务指定名称、镜像、环境变量、端口映射等信息。
image
: 指定服务所使用的镜像。例如,image: nginx:latest
表示使用最新版本的 Nginx 镜像。
environment
: 设置环境变量。你可以通过 environment
参数为服务指定所需的环境变量及其值。例如,environment: - MYSQL_ROOT_PASSWORD=example
表示设置 MySQL 服务的 MYSQL_ROOT_PASSWORD
环境变量为 "example"。
ports
: 指定端口映射。通过 ports
参数,你可以将容器内部的端口映射到主机的指定端口上。例如,ports: - 8080:80
表示将容器的 80 端口映射到主机的 8080 端口上。
volumes
: 配置数据卷挂载。使用 volumes
参数可以将容器内的路径与主机上的目录或卷进行映射。例如,volumes: - ./data:/app/data
表示将主机上的 ./data
目录挂载到容器的 /app/data
路径上。
networks
: 配置网络。通过 networks
参数,你可以为服务指定要连接到的网络。这个参数可用于定义自定义网络以及连接到现有网络。
depends_on
: 设置服务依赖。使用 depends_on
参数可以指定服务之间的依赖关系。例如,depends_on: - db
表示该服务依赖于名为 db
的服务。
这些只是 Docker Compose 配置文件中一些常用的参数。建议查阅 Docker Compose 官方文档,了解更多参数和配置选项的详细介绍。
- services:
-
- client:
-
- build:
-
- context: ./client
-
- dockerfile: ./Dockerfile
-
- restart: always
-
- ports:
-
- - 9540:9540
-
- volumes:
-
- - upload:/usr/share/nginx/html/static
-
- depends_on:
-
- - servers
-
-
-
- servers:
-
- build:
-
- context: ./servers
-
- dockerfile: ./Dockerfile
-
- command: npm run start:docker
-
- restart: always
-
- ports:
-
- - 8080:8080
-
- volumes:
-
- - upload:/upload
-
- depends_on:
-
- - mysql
-
- - redis
-
-
-
- mysql:
-
- image: mysql
-
- command: mysqld --character-set-server=utf8mb4 --collation-
- server=utf8mb4_unicode_ci
-
- restart: always
-
- ports:
-
- - 20003:3306
-
- environment:
-
- MYSQL_ROOT_PASSWORD: 'root'
-
- MYSQL_DATABASE: 'BASE_DB'
-
- volumes:
-
- - mysql:/var/lib/mysql
-
- - ./db/kapok.sql:/docker-entrypoint-initdb.d/kapok.sql
-
-
-
- adminer:
-
- image: adminer
-
- restart: always
-
- ports:
-
- 8088:8080
-
-
-
- redis:
-
- image: redis
-
- restart: always
-
- ports:
-
- - 20004:6379
-
- volumes:
-
- - redis:/data
client
服务:这是一个前端服务,使用了一个 Dockerfile 来构建镜像。它将容器内部的 9540 端口映射到主机的 9540 端口上,并将容器内的 /usr/share/nginx/html/static
路径挂载到名为 upload
的数据卷上。此服务依赖于名为 servers
的服务。
servers
服务:这是一个后端服务,同样使用了一个 Dockerfile 来构建镜像。它通过运行 npm run start:docker
命令来启动服务。该服务将容器内部的 8080 端口映射到主机的 8080 端口上,并将容器内的 /upload
路径挂载到名为 upload
的数据卷上。此服务依赖于名为 mysql
和 redis
的服务。
mysql
服务:这是一个 MySQL 数据库服务,使用了官方的 MySQL 镜像。该服务将容器内部的 3306 端口映射到主机的 20003 端口上,并设置了一些环境变量来配置 MySQL 实例。此服务还将容器内的 /var/lib/mysql
路径挂载到名为 mysql
的数据卷上,并将主机上的 ./db/kapok.sql
文件挂载到容器内的 /docker-entrypoint-initdb.d/kapok.sql
路径上。
redis
服务:这是一个 Redis 缓存服务,使用了官方的 Redis 镜像。该服务将容器内部的 6379 端口映射到主机的 20004 端口上,并将容器内的 /data
路径挂载到名为 redis
的数据卷上。
最后,还定义了三个数据卷 mysql
、redis
和 upload
,用于持久化存储数据库数据、Redis 数据和前端上传的文件。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。