Java项目docker部署

一:制作中间件镜像

         1:制作MySQL镜像

         新建文件夹,自定义文件夹名称(这里使用db)。在db文件夹中创建Dockerfile文件,和init.sql文件。init.sql文件为初始化脚本文件,这个脚本文件包含nacos配置对于的sql脚本和各个服务对应的数据库脚本。在每一个服务对应的脚本片段开头添加创建库和使用库语句,例如nacos:  CREATE database nacos;use nacos;

Dockerfile文件内容如下:

#MySQL镜像

FROM mysql:5.7

#定义MySQL初始化脚本的目录(固定的)

WORKDIR /docker-entrypoint-initdb.d

#将初始化脚本放入上面的目录先,这个.代表 /docker-entrypoint-initdb.d

ADD init.sql .

#对外暴露端口

EXPOSE 3366

#通过设置环境变量来设置密码

ENV MYSQL_ROOT_PASSWORD=root

 

 

2:制作nacos镜像

新建文件夹nacos,文件夹中包含dockerfile文件和application.properties文件(此文件为nacos所属文件)。application.properties文件中修改如下

db.num=1

db.url.0=jdbc:mysql://db:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false&serverTimezone=UTC

db.user=root

db.password=root

上面三行之前就有,现在需要将注释放开,并将db.url.0对应的值修改为对应的docker中的库,因为我们之后会吧数据库容器命名为db,所以我们此处使用db。这样才可以链接上数据库。

Dockerfile文件如下

#nacos基础镜像,在外网拉取即可

FROM nacos/nacos-server:latest

         #将准备好的属性文件覆盖

ADD application.properties /home/nacos/conf/application.properties

 

 

 

3:制作redis镜像

直接外网拉取镜像即可。

 

 

4:制作vue镜像

新建vue文件夹,包含dist文件夹,Dockerfile文件,nginx.conf文件。dist文件夹下为前端打包代码。

nginx.conf文件内容如下:

# cat nginx.conf

worker_processes auto;

events {

    worker_connections  1024;

}

http {

    include       mime.types;

    default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  65;

    client_max_body_size   20m;

    server {

        listen       801;

        server_name  localhost;

     location / {

        root   /usr/share/nginx/html;

        index  index.html index.htm;

        try_files $uri $uri/ /index.html;

        }

        error_page   500 502 503 504  /50x.html;

        location = /50x.html {

            root   html;

        }

    }

}

Dockerfile文件如下:

# 设置基础镜像

FROM nginx:latest

# 定义作者

#MAINTAINER oopxiajun <oopxiajun@qq.com>

# 将dist文件中的内容复制到 /usr/share/nginx/html/ 这个目录下面

COPY dist/  /usr/share/nginx/html/

COPY nginx.conf /etc/nginx/nginx.conf

RUN echo 'echo init ok!!'

 

 

5:制作gateway服务镜像(所以业务服务一样,不再赘述)

所有的业务服务在制作镜像前,需要将bootstrap配置文件中的部分配置修改完。Gateway服务中的配置文件需要将nacos的地址由127.0.0.1:8848改为nacos:8848。这里之所以改为nacos是因为之后启动nacos中间件服务时我们会将nacos中间件容器命名为nacos。

第一步:在idea编辑器中,点击右侧maven按钮,然后点击rms,点击Lifecycle,点击package。等待maven打包完成后,到项目对应文件夹下找到jar包(rms-gateway-1.0-SNAPSHOT.jar),然后将jar包和服务对应的Dockerfile文件放在一个文件夹下。

第二步:dockerfile编写

#从外网拉取的jdk镜像

FROM openjdk:8u222-jre

#业务服务jar包

ADD rms-gateway-1.0-SNAPSHOT.jar /rms-gateway-1.0-SNAPSHOT.jar

#暴露端口

EXPOSE 8079

#启动命令

ENTRYPOINT ["java","-jar","/rms-gateway-1.0-SNAPSHOT.jar"]

 

 

镜像制作到此结束。部署执行开发提供的start.sh脚本即可。下面是启动脚本讲解。

 

启动脚本讲解

start.bat为启动脚本,脚本内容如下:

cd D:\rmsDocker

start cmd /k "docker load -i rms_mysql.jar&&docker load -i rms_redis.jar&&docker load -i rms_vue.jar&&docker load -i rms_nacos.jar&&docker load -i rms_base.jar&&docker load -i rms_search.jar&&docker load -i rms_report.jar&&docker load -i rms_message.jar&&docker load -i rms_gateway.jar&&docker load -i rms_flow.jar&&docker load -i rms_file.jar&&docker load -i rms_auth.jar&&docker load -i rms_arc.jar&&docker run -p 3366:3306 -d --restart=always --name db rms_mysql:v1 --lower_case_table_names=1&&docker run --env MODE=standalone -p 28848:8848 -d --restart=always --name nacos --link=db rms_nacos:v1&&docker run -p 16379:6379 -d --restart=always --name redis rms_redis:v1&&docker run -p 801:801 -d --restart=always --name vue rms_vue:v1&&docker run -d -p 8079:8079 --name gateway --link=redis --link=nacos rms_gateway:v1&&docker run -d -p 9091:9091 --name arc --link=redis --link=db --link=nacos rms_arc:v1&&docker run -d -p 9092:9092 --name base --link=redis --link=db --link=nacos  rms_base:v1&&docker run -d -p 9093:9093 --name file --link=redis --link=db --link=nacos  rms_file:v1&&docker run -d -p 9094:9094 --name flow --link=redis --link=db --link=nacos rms_flow:v1&&docker run -d -p 9095:9095 --name message --link=redis --link=db --link=nacos rms_message:v1&&docker run -d -p 9096:9096 --name search --link=redis --link=db --link=nacos rms_search:v1&&docker run -d -p 9097:9097 --name report --link=redis --link=db --link=nacos rms_report:v1&&docker run -d -p 8081:8081 --name auth --link=redis --link=nacos rms_auth:v1"

 

第一步:通过cd命令切换到镜像和启动脚本所在文件夹

第二步:执行dockers命令,docker load –i为加载镜像命令,docker run 为启动命令 –name后跟容器名,-p后是对外和docker内部端口,-d后台启动 –link链接其他容器

上一篇:部署YUM仓库及NFS共享服务


下一篇:两个小shell脚本(磁盘判断,远程服务安装)