一:制作中間件鏡像
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鏈接其他容器