Docker部署SpringCloud项目

SpringCloud版本:2.0

docker-compose:1.8.0

Maven:3.5

服务器:Centos 7

Docker以及Docker-Compose安装请查看文章 CentOS 7安装Docker

1、使用Maven插件构建并上传Docker镜像

(1)、在父工程添加maven对应docker插件



    com.spotify
    docker-maven-plugin
    1.1.1
    
        
        ${docker.image.prefix}/${project.artifactId}
        
            
            latest
        
        
        src/main/docker
        
        http://192.168.1.160:2375
        
            
                /
                ${project.build.directory}
                ${project.build.finalName}.jar
            
        
    

在某个要部署的web工程的src/main/docker文件目录下创建Dockerfile文件

Docker部署SpringCloud项目_第1张图片

(2)、编写Dockerfile文件

如下:

# 基于哪个镜像
FROM java:8
# 将本地文件夹挂载到当前容器
VOLUME /tmp
# 拷贝文件到容器,jyh-upload-0.0.1-SNAPSHOT.jar这里是maven打包后的名字
ADD jyh-upload-0.0.1-SNAPSHOT.jar app.jar
RUN bash -c 'touch /app.jar'
# 配置容器启动后执行的命令
ENTRYPOINT  ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

同样的道理,其余的微服务也需要编写Dockefile文件,因为Docker插件的配置已经放在类父工程,所以不需要额外的配置。只需要编写Dockerfile文件即可。

(3)、构建镜像并上传

首先使用Maven命令清除并安装好依赖关系。建议使用父工程全部清除和一键安装依赖。

Docker部署SpringCloud项目_第2张图片

使用 clean package命令,或者自己编写命令

Docker部署SpringCloud项目_第3张图片

 

使用docker命令构建镜像并上传到服务器

clean package docker:build -DskipTests

Docker部署SpringCloud项目_第4张图片

(4)、查看是否成功

在服务器端使用docker images命令查看所有镜像

Docker部署SpringCloud项目_第5张图片

可以看到我们的镜像已经上传成功,依赖的java(jdk)也已经下载好了。但是又镜像,这就是重复上传产生的。

(5)、删除重复上传产生的虚悬镜像(名称为none的镜像)

docker images|grep none|awk '{print $3 }'|xargs docker rmi

如此单个为服务是可以正常上传了,但是Docker项目启动之后是在一个个隔离的单独容器中运行,并且会为每一个容器虚拟一个ip地址,我们通过桥接或者其他通信模式进行通信,这个时候就使用docker-compose编写yml文件定义好依赖关系,并使用网络通信。

2、使用docker-compose惊醒服务编排

(1)、在服务器任意目录,新建文件docker-compose.yml

version: '2'    #版本
services:   #服务
  eureka-server:              #自定义服务名--注册中心
    restart: on-failure
    image: djd/jyh-eureka        #镜像名称
    ports:
      - "8761:8761"            #映射的端口
    networks:
      - eureka-net             #网络模式
    environment:               #环境变量
      SERVER_PORT: "8761"      #自定义参数用于给服务的配置文件传递参数
      SPRING_PROFILES_ACTIVE: "test"      #环境
      SPRING_REDIS_HOST: "192.168.1.112"  #redis

  auth-server:              #自定义服务名--认证中心
    restart: on-failure
    image: djd/jyh-auth-server        #镜像名称
    ports:
      - "8888:8888"            #映射的端口
    networks:
      - eureka-net             #网络模式
      - auth-net
    environment:               #环境变量
      SERVER_PORT: "8888"      #自定义参数用于给服务的配置文件传递参数
      SPRING_PROFILES_ACTIVE: "test"      #环境
      SPRING_REDIS_HOST: "192.168.1.112"  #redis

  gate:   #网关服务
    restart: on-failure
    image: djd/jyh-gate
    ports:
      - "8765:8765"
    environment:
      REGISTER_URL: "http://192.168.1.160:8761/eureka/"
      SERVER_PORT: "8765"
      SERVER_ADDR: "192.168.1.160"
      SPRING_PROFILES_ACTIVE: "test"      #环境
      SPRING_REDIS_HOST: "192.168.1.112"  #redis
      AUTH-SERVER: "http://192.168.1.160:8888" # sso-server地址
    networks:
      - eureka-net
      - auth-net

  upload:   #上传服务
    restart: on-failure
    image: djd/jyh-upload
    ports:
      - "9000:9000"
    environment:
      REGISTER_URL: "http://192.168.1.160:8761/eureka/"
      SERVER_PORT: "9000"
      SERVER_ADDR: "192.168.1.160"
      SPRING_PROFILES_ACTIVE: "test"      #环境
      SPRING_REDIS_HOST: "192.168.1.112"  #redis
    networks:
      - eureka-net

  manager-web:   #后台管理
    restart: on-failure
    image: djd/manager-web
    ports:
      - "7001:7001"
    environment:
      REGISTER_URL: "http://192.168.1.160:8761/eureka/"
      SERVER_PORT: "7001"
      SERVER_ADDR: "192.168.1.160"
      SPRING_PROFILES_ACTIVE: "test"      #环境
      SPRING_REDIS_HOST: "192.168.1.112"  #redis
      SPRING_DATASOURCE_URL: "you jdbc connect address"
      AUTH-SERVER: "http://192.168.1.160:8888" # sso-server地址
    networks:
      - eureka-net
      - auth-net
networks:
  eureka-net:
    driver: bridge
  auth-net:
    driver: bridge

(2)、启动

保存文件,并使用docker-compose命令启动

[root@docker-deploy deploy-docker]# docker-compose -f ./docker-compose.yml up -d

(3)、查看容器启动进程

启动成功之后查看容器启动进程

[root@docker-deploy deploy-docker]# docker ps -a
CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS              PORTS                    NAMES
97d8f3d0b8a1        djd/manager-web       "java -Djava.secur..."   2 days ago          Up 2 days           0.0.0.0:7001->7001/tcp   deploydocker_manager-web_1
2b4805e939e3        557f5889c75d          "java -Djava.secur..."   2 days ago          Up 2 days           0.0.0.0:8765->8765/tcp   deploydocker_gate_1
9e6c0fe49b4c        djd/jyh-eureka        "java -Djava.secur..."   4 days ago          Up 4 days           0.0.0.0:8761->8761/tcp   deploydocker_eureka-server_1
ff2aefc2dd00        djd/jyh-upload        "java -Djava.secur..."   4 days ago          Up 4 days           0.0.0.0:9000->9000/tcp   deploydocker_upload_1
efa88b5dfe9e        djd/jyh-auth-server   "java -Djava.secur..."   4 days ago          Up 4 days           0.0.0.0:8888->8888/tcp   deploydocker_auth-server_1

(4)、查看日志

查看某个 启动日志:这里既可以根据容器的名称也可以根据名称的id查看日志。

[root@docker-deploy deploy-docker]# docker logs -f -t --tail 1000 deploydocker_manager-web_1

(5)、停止

停止Docker-Compose

docker-compose -f docker-compose.yml down

停止单个容器

[root@docker-deploy deploy-docker]# docker stop 容器id

删除所有容器

[root@docker-deploy deploy-docker]# docker rm -f $(docker ps -a -q)

查看所有容器

[root@docker-deploy deploy-docker]# docker ps -a

查看所有容器id

[root@docker-deploy deploy-docker]# docker ps -a -q

 

参考文章:https://blog.csdn.net/u011508407/article/details/82153562

你可能感兴趣的:(SpringCloud,Docker)