Docker $ 项目部署 :Docker 部署微服务 + Mysql

版权声明:自由转载-非商用-保持署名,听说看完点赞的人都挺帅。QQ交流群:865061230 https://blog.csdn.net/Sirius_hly/article/details/83794826

一.准备工作

这里以两个项目为例:
micro-servive-client
micro-servive-server
  这里配置方面需要注意,服务提供者的host名称为server的镜像名,否则服务无法向注册中心注册。

eureka:
  client:
    serviceUrl:
    # server服务端镜像名
      defaultZone: http://server:8761/eureka/

把项目打包为jar包,然后上传到linux服务器

二.编译镜像

1.编写server的Dockerfile

FROM java:8
VOLUME /tmp
ADD server.jar /app.jar
EXPOSE 8761
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

在这里插入图片描述

# docker build -t server .

2.编写client的Dockerfile

FROM java:8
VOLUME /tmp
ADD client.jar /app.jar
EXPOSE 8762
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

在这里插入图片描述
构建镜像

# docker build -t client .

三.运行服务

3.1.依次以docker命令方式运行

为了使所有容器在同一个网络内能够相互访问,首先创建一个网桥

# docker network create -d bridge micro

运行mysql

# docker volume create mysql_vol
# docker run -it --rm --name mysql -v mysql_vol:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=roof -p 3306:3306 -d --network micro mysql

运行server

# docker run --name server -d -p 8761:8761 --network micro server

运行client

# docker run --name client  -p 8762:8762 -d --network micro client

3.2.通过docker-compose.yml方式运行

  当服务非常多的时候,一个一个地启动会非常麻烦,我们可以通过编写docker-compose.yml文件,直接命令启动所有的容器。
1.编写docker-compose.yml文件

version: '2'
services:

 mysql:
    image: mysql
    restart: always
    container_name: mysql
    environment:
      MYSQL_ROOT_PASSWORD: roof
    ports:
      - "3306:3306"
    volumes:
      - mysql_vol:/var/lib/mysql
    networks:
      - micro

 server:
    image: server
    container_name: server
    ports:
      - "8761:8761"
    networks:
      - micro

 client:
    image: client
    container_name: client
    ports:
      - "8762:8762"
    depends_on:
      - mysql
      - server
    networks:
      - micro

networks:
  micro:
    driver: bridge

volumes:
  mysql_vol:

2.启动docker-compose运行项目

# docker-compose up -d

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四.通过docker-compose.yml直接编排和运行项目

  docker-compose.yml也可以直接构建镜像,然后运行,跳过第二步,根据上传的jar直接使用docker-compose.yml构建镜像。

1.修改docker-compose.yml文件,其他不变

version: '2'
services:

 mysql:
    image: mysql
    restart: always
    container_name: mysql
    environment:
      MYSQL_ROOT_PASSWORD: roof
    ports:
      - "3306:3306"
    volumes:
      - mysql_vol:/var/lib/mysql
    networks:
      - micro

 server:
    image: server
    build:
      context: ./server
      dockerfile: ./Dockerfile
    container_name: server
    ports:
      - "8761:8761"
    networks:
      - micro

 client:
    image: client
    build:
      context: ./client
      dockerfile: ./Dockerfile
    container_name: client
    ports:
      - "8762:8762"
    depends_on:
      - mysql
      - server
    networks:
      - micro

networks:
  micro:
    driver: bridge
volumes:
  mysql_vol:

改动的关键代码如下

build:
context: ./client
dockerfile: ./Dockerfile
1.build是构建镜像的命令
2.context是构建的路径
3.dockerfile是dockerfile的路径,相对于构建路径。

  比如

在这里插入图片描述
在这里插入图片描述
2.在docker-compose.yml文件目录下执行命令构建和编排镜像

# docker-compose up -d

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Sirius_hly/article/details/83794826