docker-compose容器编排部署

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

docker-compose部署微服务

  本文是对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无关。修改后的配置文件如下所示。

image-20230203174008705

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

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

  项目打包

image-20230203174144978

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

image-20230203175441772

3.5 执行docker-compose up

  运行如下命令

docker-compose up -d

image-20230203174551316

  查看正在运行的容器docker ps
在这里插入图片描述

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

关闭容器的命令

docker-compose stop

image-20230203174842035

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

image-20230203174929126

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

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

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: Docker