Docker-Compose 搭建环境
前提:
操作环境: windows11
使用工具: docker desktop
搭建环境: mysql, redis, pgsql
附自身的配置文件以及挂在文件夹: https://gitee.com/dongxinlong66/docker-compose-environment
编写 docker-compose.yml 文件
version: '2' # Docker Compose文件的版本
services: # 定义了一组要在单个docker-compose.yml文件中管理的服务
pgsql: # PostgreSQL服务
image: 'postgres:14' # 使用官方PostgreSQL镜像的14版本
container_name: "dev-pgsql" # 设置容器的名称为dev-pgsql
restart: always # 设置容器总是自动重启(除非明确停止)
ports: # 映射端口
- 5431:5432 # 将容器的5432端口映射到宿主机的5431端口
volumes: # 挂载卷
- /C/Users/Administrator/Desktop/dockercompose/postgres_conf/data:/var/lib/postgresql/data # 挂载数据目录
- /C/Users/Administrator/Desktop/dockercompose/init-pg-scripts:/docker-entrypoint-initdb.d # 挂载初始化脚本目录
environment: # 设置环境变量
POSTGRES_USER: superadmin # 设置数据库用户名为superadmin
POSTGRES_PASSWORD: 54851411 # 设置数据库用户密码
POSTGRES_DB: postgres # 设置默认数据库名为postgres
redis: # Redis服务
image: 'redis' # 使用官方Redis镜像的最新版本
container_name: "dev-redis" # 设置容器的名称为dev-redis
restart: always # 设置容器总是自动重启(除非明确停止)
ports: # 映射端口
- 6380:6379 # 将容器的6379端口映射到宿主机的6380端口
volumes: # 挂载卷
- /C/Users/Administrator/Desktop/dockercompose/redis_conf:/usr/local/etc/redis # 挂载Redis配置文件目录
mysql: # MySQL服务
image: 'mysql:latest' # 使用官方MySQL镜像的最新版本
container_name: 'dev-mysql' # 设置容器的名称为dev-mysql
restart: always # 设置容器总是自动重启(除非明确停止)
ports: # 映射端口
- 3307:3306 # 将容器的3306端口映射到宿主机的3307端口
environment: # 设置环境变量
MYSQL_ROOT_PASSWORD: 54851411 # 设置MySQL的root用户密码
volumes: # 挂载卷
- /C/Users/Administrator/Desktop/dockercompose/init-mysql-scripts:/docker-entrypoint-initdb.d # 挂载初始化脚本目录
启动服务
在终端中进入到docker-compose.yml
文件所在目录,然后执行以下命令启动服务:
注意,由于我使用的挂在数据。所以需要提前创建好挂载目录。且挂载目录的权限需要设置为777,否则会出现权限问题。
且当下的docker-compose.yml文件中的挂载目录是绝对路径,所以需要根据自己的实际情况修改。
docker-compose up -d
注意事项
使用Docker Compose时,有几个重要的注意事项需要考虑,以确保你的容器化应用能够顺利运行并高效管理。以下是一些关键的注意事项:
1. 版本兼容性
- docker-compose.yml文件版本:Docker Compose支持多个版本的配置文件格式(如V1、V2、V3等)。你需要确保你的
docker-compose.yml
文件版本与你的Docker Compose和Docker Engine版本兼容。较新版本的Docker Compose和Docker Engine通常支持更多的特性和更好的性能。 - Docker Engine版本:检查并确认你的Docker Engine版本是否支持你正在使用的docker-compose.yml文件版本。可以通过Docker官方文档或发行说明来查找兼容性信息。
2. 配置文件格式
- YAML格式:docker-compose.yml文件使用YAML格式编写,因此需要注意YAML的缩进和语法规则。错误的缩进或拼写错误可能会导致配置无法正确解析。
- 配置项:确保你了解并正确使用了所有必要的配置项。例如,服务名称、镜像、端口映射、环境变量、卷挂载等。
3. 镜像管理
- 镜像拉取:Docker Compose会根据你的配置自动拉取所需的镜像。确保你的镜像仓库地址和认证信息(如果需要)是正确的。
- 镜像构建:如果你使用Dockerfile来构建镜像,请确保Dockerfile的路径和构建指令在docker-compose.yml中正确设置。
4. 网络与端口
- 网络配置:Docker Compose支持自定义网络配置,你可以根据需要设置服务之间的网络隔离或互联。
- 端口映射:正确设置端口映射以确保服务可以从宿主机或其他容器访问。
5. 依赖与启动顺序
- 服务依赖:如果你的服务之间存在依赖关系(例如,一个服务需要另一个服务先启动),请确保在docker-compose.yml中正确配置了这些依赖。虽然Docker Compose会尝试按照依赖关系启动服务,但在某些复杂场景下,你可能需要额外的脚本来管理启动顺序。
6. 持久化存储
- 卷挂载:使用卷挂载来持久化数据,并确保卷的路径在宿主机上是正确的且Docker有权限访问。
7. 环境变量
- 环境变量设置:在docker-compose.yml中设置环境变量可以方便地管理配置信息,确保敏感信息(如数据库密码)不被硬编码在配置文件中。
8. 性能与资源限制
- 资源限制:根据你的应用需求,合理设置容器的CPU、内存等资源限制,以避免资源争用和性能问题。
9. 安全性
- 安全配置:确保你的Docker Compose配置中包含了必要的安全措施,如使用HTTPS协议、限制网络访问等。
10. 调试与日志
- 日志管理:Docker Compose提供了方便的日志查看功能,可以帮助你诊断问题。确保你了解如何使用这些日志来调试你的应用。
11. 备份与恢复
- 数据备份:定期备份你的容器数据以防数据丢失。可以使用Docker Compose的卷挂载功能将数据存储在宿主机上,并使用标准的备份工具进行备份。
12. 更新与升级
- 保持更新:定期更新你的Docker Compose和Docker Engine到最新版本,以获取新的功能和安全修复。
综上所述,使用Docker Compose时需要注意版本兼容性、配置文件格式、镜像管理、网络与端口、依赖与启动顺序、持久化存储、环境变量、性能与资源限制、安全性、调试与日志以及备份与恢复等多个方面。通过遵循这些注意事项,你可以更有效地管理你的容器化应用。