使用docker-compose搭建各种环境

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时需要注意版本兼容性、配置文件格式、镜像管理、网络与端口、依赖与启动顺序、持久化存储、环境变量、性能与资源限制、安全性、调试与日志以及备份与恢复等多个方面。通过遵循这些注意事项,你可以更有效地管理你的容器化应用。

  • 13
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

.@d

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值