使用docker compose一键部署多个服务的方法

 更新时间:2024年01月29日 10:47:52   作者:阿演  
docker compose 是 docker 官方的开源项目,用来实现对 docker 容器集群的快速编排,通过docker-compose可以一键创建和删除多个容器 ,本文给大家介绍的非常详细,感兴趣的朋友一起看看吧

docker compose 是 docker 官方的开源项目,用来实现对 docker 容器集群的快速编排

下载安装

官网下载地址:点这里

我用的是云服务器,所以就直接用yum安装了,直接执行这两条命令,等安装结束后查看版本,看到版本号表示安装成功

下面还有一种手动安装的方式,因为是访问的github,我的服务器一直访问失败,就只能用上面那种方式了

不使用 compose 部署项目

我这里用一个springboot项目来测试,只写了一个接口,访问redis和mysql

编写dockerfile来构建镜像

FROM java:8
MAINTAINER vhukze
# 指定临时文件夹为/tmp
VOLUME /tmp
# 将jar包添加到容器中重命名为my-docker.jar
ADD docker-test.jar my-docker.jar
# 运行jar包
RUN bash -c 'touch /my-docker.jar'
ENTRYPOINT ["java","-jar","/my-docker.jar"]
# 暴露8888端口
EXPOSE 8888

把项目的jar包和Dockerfile文件上传到服务器,我这里放到了/mydocker路径下

使用命令构建镜像(注意最后的点,表示Dockerfile文件在当前目录下)

docker build -t my-docker:1.0 .

稍等一会儿之后,构建成功,查看镜像

这里代码访问的redis和mysql同样是docker中启动的

使用my-docker镜像启动一个容器

docker run -d -p 8888:8888 my-docker:1.0

不使用compose,需要单独启动三个容器,执行三遍docker run

使用 compose 部署项目

编写docker-compose.yml文件,并上传到服务器的/mydocker 路径下

version: "3"
# 多个服务
services:
  # my-docker服务
  myDockerService:
    # 镜像名称和版本
    image: my-docker:1.0
    # 启动的容器名称
    container_name: my-docker
    # 端口
    ports:
      - 8888:8888
    # 容器数据卷
    volumes:
      - /app/myDocker:/data
    # 网络模式 (最下方自定义的一个网络模式)
    networks:
      - my_net
    # 依赖的服务(表示需要依赖的服务先启动)
    depends_on:
      - redis
      - mysql
  # redis 服务
  redis:
    image: redis
    ports:
      - 6666:6379
    volumes:
      - /app/redis/redis.conf:/etc/redis/redis.conf
      - /app/redis/data:/data
    networks:
      - my_net
    # 启动命令
    command: redis-server /etc/redis/redis.conf
  # mysql服务
  mysql:
    image: mysql:5.7
    # mysql 相关配置
    environment:
      MYSQL_ROOT_PASSWORD: '123456'
      MYSQL_ALLOW_EMPTY_PASSWORD: 'no'
      MYSQL_DATABASE: 'testdb'
      MYSQL_USER: 'vhukze'
      MYSQL_PASSWORD: 'vhukze'
    ports:
      - 3306:3306
    volumes:
      - /app/mysql/db:/var/lib/mysql
      - /app/mysql/conf/my.cnf:/etc/my.cnf
      - /app/mysql/init:/docker-entrypoint-initdb.d
    networks:
      - my_net
    # 解决外部无法访问问题
    command: --default-authentication-plugin=mysql_native_password
# 创建自定义网络模式
networks:
  my_net: 

使用同一个自定义网络模式,互相之间可以通过服务名称访问,修改项目配置文件,把redis和mysql的ip改为服务名称(注意这里redis的端口要改成容器内使用的端口,因为是容器之间互相访问,不会走宿主机的端口)

再次打包项目上传到服务器,使用Dockerfile构建镜像

在docker-compose.yml所在目录执行下面命令,检查语法是否有误

执行之后没有任何输出,表示语法没有问题

docker compose config -q

使用docker-compose启动三个容器

在docker-compose.yml所在目录执行下面命令

docker compose up -d

可以看到网络模式和三个容器都创建完成了

使用浏览器访问my-docker项目的接口,访问成功

一键停止并删除

docker compose down

一键停止

docker compose stop

一键启动

docker compose start

一键重启

docker compose restart

结论是 通过docker-compose可以一键创建和删除多个容器

到此这篇关于使用docker compose一键部署多个服务的文章就介绍到这了,更多相关docker compose多个服务内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • docker连接spring boot和mysql容器方法介绍

    docker连接spring boot和mysql容器方法介绍

    这篇文章主要介绍了docker连接spring boot和mysql容器方法介绍,具有一定参考价值,需要的朋友可以了解下。
    2017-10-10
  • docker中安装elasticsarch 等镜像的过程

    docker中安装elasticsarch 等镜像的过程

    这篇文章主要介绍了docker中安装elasticsarch 等镜像,本文结合示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-12-12
  • docker容器的四种端口映射演示分析

    docker容器的四种端口映射演示分析

    这篇文章主要为大家介绍了docker容器的四种端口映射演示分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪
    2022-04-04
  • 详解Docker容器跨主机通信的方法

    详解Docker容器跨主机通信的方法

    本篇文章主要介绍了详解Docker容器跨主机通信的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • Docker中使用Redis配置文件的详细指南

    Docker中使用Redis配置文件的详细指南

    在现代软件开发中,Redis 因其高性能和低延迟的特性,被广泛用作数据结构服务器和消息代理,Docker 作为一个轻量级的容器化平台,使得部署和管理 Redis 变得更加简单和高效,本文给大家介绍了Docker中使用Redis配置文件的详细指南,需要的朋友可以参考下
    2024-11-11
  • Centos 6.5中安装docker的步骤(简洁版)

    Centos 6.5中安装docker的步骤(简洁版)

    这篇文章主要介绍了Centos 6.5中安装docker的步骤(简洁版),需要的朋友可以参考下
    2016-10-10
  • docker配置修改阿里云镜像仓库的实现

    docker配置修改阿里云镜像仓库的实现

    这篇文章主要介绍了docker配置修改阿里云镜像仓库的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • Docker Compose搭建Redis主从复制环境的实现步骤

    Docker Compose搭建Redis主从复制环境的实现步骤

    在Docker中搭建Redis主从架构非常方便,下面是一个示例,演示如何使用Docker Compose设置一个Redis主从复制环境,文中有详细的代码示例,具有一定的参考价值,需要的朋友可以参考下
    2023-09-09
  • Docker从0到1实现项目编排部署

    Docker从0到1实现项目编排部署

    Docker编排是管理和协调多个Docker容器的工具和技术,目的是简化容器的部署、扩展和管理流程,本文主要介绍了Docker从0到1实现项目编排部署,感兴趣的可以了解一下
    2025-03-03
  • Docker环境中部署n8n支持Python节点(两种部署方式)

    Docker环境中部署n8n支持Python节点(两种部署方式)

    本文介绍如何在Docker环境中部署n8n工作流自动化工具,并确保支持 Code in Python (Native) 节点,本文给大家分享两种常见的部署方式,感兴趣的朋友跟随小编一起看看吧
    2026-02-02

最新评论