docker常用容器启动docker-compose.yml配置文件使用
作者:java阿杜
在平常的开发工作中,我们经常需要部署项目。项目开发完成后,部署测试环境、部署生产环境等。以前部署项目,在服务器上安装项目所需的软件,如 nginx、redis 等。可能在测试环境测试没有问题,由于环境配置等不同,部署到生产环境又会产生莫名奇怪的问题。随着 docker 容器的出现,我们可以用 Dockerfile 构建镜像,构建完成后运行,这样可以保证每个地方使用的镜像一致,然后启动使用 docker-compose.yml 文件,保证容器的配置一致。今天总结下常用软件启动的 docker-compose.yml 文件。
概述
定义和运行多容器 Docker 应用的工具,可以在里面定义多个服务信息,定义每个服务的服务名、端口映射、环境变量、网络模式等。这样可以方便的管理启动命令,方便拓展。可以一次启动多个容器。常用于部署测试环境等。这样可以保证每个环境映射的端口、依赖的镜像等信息一致,减少因环境问题导致的差异。通过 docker-compose.yml 文件,可以确保开发、测试和生产环境的一致性,避免“因部署不同机器存在差异”的问题。
docker-compose.yml 示例
1:后端服务
services: ruoyi-admin: image: ruoyi-admin:v1.0 container_name : ruoyi-admin ports: - "9016:9016" environment: - SERVER_PORT=9016 - TZ=Asia/Shanghai restart: always networks: - my_network networks: my_network: external: true
2:mysql
services: mysql: image: mysql:8.0.33 restart: always container_name: mysql environment: MYSQL_ROOT_PASSWORD: your_password TZ: Asia/Shanghai ports: - "3306:3306" volumes: - /docker/mysql/log:/var/log/mysql - /docker/mysql/data:/var/lib/mysql - /docker/mysql/conf:/etc/mysql/conf.d command: --max_connections=1000 --default-authentication-plugin=mysql_native_password --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci privileged: true network_mode: "host"
3:nginx
services: nginx: image: nginx:latest container_name: nginx-web environment: TZ: Asia/Shanghai ports: - "80:80" - "443:443" volumes: # 配置文件映射 - /docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf - /docker/nginx/conf:/etc/nginx/conf # 页面目录 - /docker/nginx/html:/usr/share/nginx/html privileged: true network_mode: "host"
4:redis
services: redis: image: redis:6.2.6 container_name: redis6.2.6 ## 设置持久化,允许远程访问,密码等 command: redis-server --appendonly yes --bind 0.0.0.0 --requirepass your_password ports: - 6379:6379 volumes: # - ./data/:/data - /docker/redis/conf/redis.conf:/etc/redis/redis.conf - /docker/redis/data:/data environment: - TZ=Asia/Shanghai restart: always # 获取宿主机 root 权限 privileged: true # # 设置容器网络为本机网络 network_mode: "host"
5:nacos
nacos: image: nacos/nacos-server:v2.0.3 container_name: nacos restart: always ports: # web 界面访问端口 - 8848:8848 environment: - MODE=standalone # 连接 mysql 数据库,主要是为了配置的持久化 - SPRING_DATASOURCE_PLATFORM=mysql # 定义使用的数据库是 mysql - MYSQL_SERVICE_HOST=mysql - MYSQL_SERVICE_PORT=3306 - MYSQL_SERVICE_DB_NAME=nacos_dev - MYSQL_SERVICE_USER=root - MYSQL_SERVICE_PASSWORD=root volumes: - /docker/nacos/logs:/home/nacos/logs
6:rabbitmq
rabbitmq: # 带有管理界面的 rabbitmq 镜像 image: rabbitmq:management container_name: rabbitmq ports: # AMQP 协议端口 - "5672:5672" # rabbitmq 管理界面端口 - "15672:15672" volumes: # 数据持久化目录 - /usr/local/docker/rabbitmq/data:/var/lib/rabbitmq # 日志目录 - /usr/local/docker/rabbitmq/logs:/var/log/rabbitmq environment: # 设置用户名 RABBITMQ_DEFAULT_USER: guest # 设置密码 RABBITMQ_DEFAULT_PASS: 123456 restart: always
docker compose 常用命令
- (1):docker compose up -d:启动新的容器,会先拉取镜像等然后创建新的容器。带上 -d 是非阻塞的,不阻塞当前的命令窗口,不带 -d 是阻塞的,会阻塞当前的命令窗口。
- (2):docker compose down:停止所有运行中的容器
- (3):docker compose start:启动一个停止的容器
- (4):docker compose restart:重启容器
- (5):docker compose build:构建镜像
- (6):docker compose config:查看配置
- (7):docker compose logs:查看容器日志
- (8):docker compose exec service-name command:进入运行中的容器
总结
docker-compose.yml 可以更好的管理启动命令,这样可以保持测试环境、生产环境等端口,配置等一致性,防止项目部署因配置不同导致的问题。
包括镜像来源、容器名称、端口映射、环境变量、数据卷挂载等。使用 docker run 启动,要输入很长的命令,而且容易出错。
使用 docker-compose.yml 管理命令,启动方便快捷,也降低了配置出错的概率。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
- 关于immich docker-compose.yml配置文件详解
- 在docker-compose.yml文件中配置容器的环境变量方式
- docker-compose.yml参数的用法(配置文件)
- 使用docker compose快速配置一组容器服务详解
- Springboot使用docker-compose实现动态配置过程
- docker-compose配置并部署redis服务的实现
- 详解Docker Compose配置文件参数
- Docker compose配置文件写法及命令使用示例
- docker-compose安装yml文件配置方式
- docker compose 一键部署分布式配置中心Apollo的过程详解
- docker-compose部署配置jenkins的详细教程
- Docker Compose 配置指南小结