使用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容器中运行nginx

    Docker容器中运行nginx

    本文介绍了从docker hub拉取官方nginx镜像并自定义部分配置,绑定端口运行的过程。希望小伙伴们能够从中得到些知识
    2017-03-03
  • docker 部署hbase并且java Api连接的操作过程

    docker 部署hbase并且java Api连接的操作过程

    这篇文章主要介绍了docker 部署hbase并且java Api连接的操作过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2023-11-11
  • Docker Swarm结合Docker Compose部署集群的实现

    Docker Swarm结合Docker Compose部署集群的实现

    本文主要介绍了Docker Swarm结合Docker Compose部署集群的实现,通过部署和配置帮助读者更好地理解并应用这些工具,感兴趣的可以了解一下
    2023-12-12
  • gitlab实践教程使用git config进行相关的配置操作

    gitlab实践教程使用git config进行相关的配置操作

    今天小编就为大家分享一篇关于gitlab实践教程使用git config进行相关的配置操作,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • 使用Docker部署 spring-boot maven应用的方法

    使用Docker部署 spring-boot maven应用的方法

    本篇文章主要介绍了使用Docker部署 spring-boot maven应用的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • 解决docker安装后运行hello-world报错的问题

    解决docker安装后运行hello-world报错的问题

    这篇文章主要介绍了解决docker安装后运行hello-world报错的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • Docker安装Tomcat无法访问的问题及解决

    Docker安装Tomcat无法访问的问题及解决

    这篇文章主要介绍了Docker安装Tomcat无法访问的问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • docker registry私服搭建的方法

    docker registry私服搭建的方法

    这篇文章主要介绍了docker registry私服搭建的方法,docker官方的registry镜像分为两个版本,v2和v2以前的版本,本文将分别搭建基于SSL和登录认证的以上两个版本的docker私服
    2018-05-05
  • Docker build命令使用小结

    Docker build命令使用小结

    本文主要介绍了Docker build命令使用小结,主要用于使用Dockerfile创建镜像,它会根据用户提供的Dockerfile文件,在本地构建出一个新的镜像,感兴趣的可以了解一下
    2023-12-12
  • Redis快速部署为Docker容器的实现方法

    Redis快速部署为Docker容器的实现方法

    本文主要介绍了Redis快速部署为Docker容器的实现方法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-12-12

最新评论