Docker-Compose容器编排部署


  • 3.1 编写Dockfile

  • 3.2 编写docker-compose.yaml

  • 3.3 修改工程配置

  • 3.4 将相关文件上传到服务器

  • 3.5 执行docker-compose up


  本文是对Docker+Nginx打包部署前后端分离项目这篇文章的补充,原文是简单的用docker部署的,需要一个一个pull镜像,一个一个启动容器,很麻烦,现在使用docker-compose一行命令解决多个容器的启停。

1、Docker-Compose是什么?

  Docker-Compose是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。

2、应用场景

  Compose允许用户通过一个单独的docker-compose.yml模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。可以很容易地用一个配置文件定义一个多容器的应用,然后使用一条指令安装这个应用的所有依赖,完成构建。Docker-Compose 解决了容器与容器之间如何管理编排的问题。

3、docker-compose部署SpringBoot项目

3.1 编写Dockfile

# 基础镜像使用java
FROM java:8
# 作者
MAINTAINER xtt
# VOLUME 指定临时文件目录为/tmp,在主机/var/lib/docker目录下创建了一个临时文件并链接到容器的/tmp
VOLUME /tmp
# 将jar包添加到容器中并更名为auth_docker.jar
ADD service-system.jar auth_docker.jar
# 运行jar包
RUN bash -c 'touch /auth_docker.jar'
ENTRYPOINT ["java","-jar","/auth_docker.jar"]
#暴露8800端口作为微服务
EXPOSE 8800

3.2 编写docker-compose.yaml

  这里主要三个服务,一个是我们的后端服务,一个redis服务,一个mysql服务

  三个容器使用同一个docker network。

version: "3"

services:
  guigu_auth:
    build:
      context: ./sysrole
      dockerfile: Dockerfile
    container_name: guigu_auth
    restart: always
    privileged: true
    ports:
    - "8800:8800"
    volumes:
      - ./:/data
    networks:
      - auth_network
    depends_on:
      - redis
      - mysql

  redis:
    image: redis:6.0.8
    container_name: redis
    restart: always
    privileged: true
    ports:
    - "6379:6379"
    volumes:
    - ./redis/redis.conf:/etc/redis/redis.conf
    - ./redis/data:/data
    networks:
      - auth_network
    command: redis-server /etc/redis/redis.conf

  mysql:
    image: mysql:8.0.31
    restart: always
    container_name: mysql
    privileged: true
    environment:
      MYSQL_ROOT_PASSWORD: 'wsxhz888'
      MYSQL_ALLOW_EMPTY_PASSWORD: 'no'
      MYSQL_DATABASE: 'guigu-auth'
      MYSQL_USER: 'xtt'
      MYSQL_PASSWORD: 'wsxhz888'
    ports:
    - "3307:3306"
    volumes:
    - ./mysql/db:/var/lib/mysql
    - ./mysql/conf/my.cnf:/etc/my.cnf
    - ./mysql/init:/docker-entrypoint-initdb.d
    networks:
      - auth_network
    command: --default-authentication-plugin=mysql_native_password
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_general_ci
networks:
  auth_network:

3.3 修改工程配置

  修改配置文件,由于使用的同一个docker network,所以容器之间可以通过域名访问,与IP无关。修改后的配置文件如下所示。

Docker-Compose容器编排部署
image-20230203174008705

3.4 将相关文件上传到服务器

  后端项目打成jar包并和Dockerfile、docker-compose.yaml一同上传到服务器指定目录下。

  项目打包:

Docker-Compose容器编排部署
image-20230203174144978

  将文件上传到服务器,上传之后如下所示:

Docker-Compose容器编排部署
image-20230203175441772

3.5 执行docker-compose up

  运行如下命令:

docker-compose up -d
Docker-Compose容器编排部署
image-20230203174551316

  查看正在运行的容器:docker psDocker-Compose容器编排部署

  可以看到,启动了三个容器,分别是我们的后端微服务、redis和mysql。

关闭容器的命令:

docker-compose stop
Docker-Compose容器编排部署
image-20230203174842035

  再次开启容器:docker-compose up -d

Docker-Compose容器编排部署
image-20230203174929126

   可以看到,很方便,一个命令实现多个容器的启停,不像原来使用docker那样一个一个关闭和开启容器了。

   这里基本上就完了,可以进入到mysql容器内部建库建表就可以了,如果配置了启动的sql脚本那就更方便了。


原文始发于微信公众号(全栈开发那些事):Docker-Compose容器编排部署

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/91328.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!