一:制作中间件镜像
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链接其他容器