docker常用容器启动docker-compose.yml配置文件使用

 更新时间:2025年03月21日 09:01:47   作者:java阿杜  
这篇文章主要介绍了docker常用容器启动docker-compose.yml配置文件使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

在平常的开发工作中,我们经常需要部署项目。项目开发完成后,部署测试环境、部署生产环境等。以前部署项目,在服务器上安装项目所需的软件,如 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 管理命令,启动方便快捷,也降低了配置出错的概率。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • docker拉取镜像超时解决的问题解决

    docker拉取镜像超时解决的问题解决

    本文解决了由于网络问题导致的Docker拉取中央仓库镜像超时的问题,通过从其他镜像仓库拉取镜像文件来解决这一问题,感兴趣的可以了解一下
    2025-03-03
  • Docker镜像与容器的导入导出操作实践

    Docker镜像与容器的导入导出操作实践

    这篇文章介绍了Docker镜像与容器的导入导出操作,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-03-03
  • 详解centos7 docker1.12安装私有仓库

    详解centos7 docker1.12安装私有仓库

    本篇文章主要介绍了centos7 docker1.12安装私有仓库,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01
  • 将普通用户加入Docker组,使用docker问题

    将普通用户加入Docker组,使用docker问题

    这篇文章主要介绍了将普通用户加入Docker组,使用docker问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • docker常用命令汇总

    docker常用命令汇总

    这篇文章主要介绍了docker常用命令汇总,都是一些常用的基本命令,有需要的同学可以尝试学习下
    2020-12-12
  • centos下docker安装及springboot远程发布docker的方法

    centos下docker安装及springboot远程发布docker的方法

    这篇文章主要介绍了centos下docker安装及springboot远程发布docker的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • docker部署Vaultwarden密码共享管理系统的实现(图文)

    docker部署Vaultwarden密码共享管理系统的实现(图文)

    Vaultwarden是一个开源的密码管理器,它提供了类似于Bitwarden的功能,允许用户安全地存储和管理密码、敏感数据和身份信息,本文主要介绍了docker部署Vaultwarden密码共享管理系统的实现,感兴趣的可以了解一下
    2023-10-10
  • .netcore 使用surging框架发布到docker

    .netcore 使用surging框架发布到docker

    这篇文章主要介绍了netcore 使用surging框架发布到docker,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • docker的安装及docker-compose详解

    docker的安装及docker-compose详解

    Docker是一种轻量级的容器技术,可以帮助开发者更加方便地打包、发布和管理应用程序,在Linux系统上安装Docker非常容易,这篇文章主要介绍了docker的安装及docker-compose,需要的朋友可以参考下
    2024-05-05
  • Docker构建简单的个人主页网站实战教程

    Docker构建简单的个人主页网站实战教程

    Docker是一种开源容器化技术,可以打包、发布和运行应用程序,本教程介绍了如何使用Docker构建一个简单的个人主页网站,通过编写Dockerfile来自定义镜像,并展示了如何通过传入环境变量来动态更改网页内容,项目使用的技术包括Docker、Alpine、Nginx、HTML、CSS和JavaScript
    2024-10-10

最新评论