Docker Compose一站式容器编排指南

1 阅读2分钟

背景

  1. 学习路径: www.bilibili.com/video/BV1CU…

  2. 这个case只能是一个入门级别的case,后边给大家带来企业实战级别

首先试试中间件

docker-compose 文件部署数据库,启动以后数据库可以远程连接,并且也初始化了数据库ems

version: "3.0"

networks:
  ems:

volumes:
  data: # 默认/var/lib/docker/volumes/

services:
  mysql:
    image: mysql:5.7
    ports:
      - "3306:3306" #只写一个端口随机使用宿主机一个端口进行容器端口映射
    environment:
      - "MYSQL_ROOT_PASSWORD=root"
      - "MYSQL_DATABASE=ems"
    volumes:
      - data:/var/lib/mysql
      - ./ems.sql:/docker-entrypoint-initdb.d/ems.sql
    networks:
      - ems

docker-compose 文件部署nacos

单独去启动nacos服务 docker-compose up -d nacos

http://8.136.60.157:8848/nacos 成功登录

version: "3.0"

networks:
  ems:

volumes:
  data: # 默认/var/lib/docker/volumes/

services:
  nacos:
    image: nacos/nacos-server:1.3.1
    ports:
      - "8848:8848"
    environment:
      - "MODE=standalone"
    networks:
      - ems
  mysql:
    image: mysql:5.7
    ports:
      - "3306:3306" #只写一个端口随机使用宿主机一个端口进行容器端口映射
    environment:
      - "MYSQL_ROOT_PASSWORD=root"
      - "MYSQL_DATABASE=ems"
    volumes:
      - data:/var/lib/mysql
      - ./ems.sql:/docker-entrypoint-initdb.d/ems.sql
    networks:
      - ems

编写各个服务的dockerfile

FROM openjdk:8-jre
ENV APP_HOME=/apps
WORKDIR $APP_HOME
COPY ./ems-departments-1.0.jar ./dept.jar
EXPOSE 8082
ENTRYPOINT ["java","-jar"]
CMD ["dept.jar"]
FROM openjdk:8-jre
ENV APP_HOME=/apps
WORKDIR $APP_HOME
COPY ./ems-employees-1.0.jar ./emp.jar
EXPOSE 8081
ENTRYPOINT ["java","-jar"]
CMD ["emp.jar"]
FROM openjdk:8-jre
ENV APP_HOME=/apps
WORKDIR $APP_HOME
COPY ./ems-gateway-1.0.jar ./gateway.jar
EXPOSE 8888
ENTRYPOINT ["java","-jar"]
CMD ["gateway.jar"]

最终的docker-compose

version: "3.0"

networks:
  ems:

volumes:
  data: # 默认/var/lib/docker/volumes/

services:
  employee:
    build:
      context: ./employee
      dockerfile: Dockerfile
    ports:
      - "8081:8081"
    networks:
      - ems
  department:
    build:
      context: ./department
      dockerfile: Dockerfile
    ports:
      - "8082:8082"
    networks:
      - ems
  gateway:
    build:
      context: ./gateway
      dockerfile: Dockerfile
    ports:
      - "8888:8888"
    networks:
      - ems

  nacos:
    image: nacos/nacos-server:1.3.1
    ports:
      - "8848:8848"
    environment:
      - "MODE=standalone"
    networks:
      - ems
  mysql:
    image: mysql:5.7
    ports:
      - "3306:3306" #只写一个端口随机使用宿主机一个端口进行容器端口映射
    environment:
      - "MYSQL_ROOT_PASSWORD=root"
      - "MYSQL_DATABASE=ems"
    volumes:
      - data:/var/lib/mysql
      - ./ems.sql:/docker-entrypoint-initdb.d/ems.sql
    networks:
      - ems

微服务如何整合nacos,以DEPARMENTS为例

bootstrap.properties的配置

spring.cloud.nacos.server-addr=8.136.60.157:8848
spring.cloud.nacos.config.namespace=a88bd706-3505-40a1-b3ee-cfc44efa57ef
spring.cloud.nacos.config.group=DEPARMENTS
spring.cloud.nacos.config.name=department-dev
spring.cloud.nacos.config.file-extension=properties

nacos上面的样子

image.png

image.png

部署到linux上面的样子

image.png

分别通过网关和微服务进行访问都是ok的

http://8.136.60.157:8082/departments

http://8.136.60.157:8081/employees

http://8.136.60.157:8888/ems/employees