準備工作:
購買服務器、購買域名并備案、解析出需要用的域名
h5:h5.xxx.cn
平臺端:adminplat.xxx.cn
商戶端:adminmer.xxx.cn
front api:api.front.xxxcn
admin api:api.admin.xxx.cn
連接上服務器后的第一步先重裝一下docker,因為購買服務器選擇的docker版本低,運行java容器可能會報內存不足。
重裝docker
卸載:
sudo yum install -y yum-utils
sudo yum remove docker-ce docker-ce-cli containerd.io
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
安裝:
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io
- 設置開機自啟:
systemctl enable docker.service
在拉取鏡像的時候如果報錯了可以配置一下鏡像倉庫
vi /etc/docker/daemon.json
阿里云內容如下:
{
"registry-mirrors":["https://6kx4zyno.mirror.aliyuncs.com"]
}
重啟
systemctl daemon-reload
systemctl restart docker
部署
后端準備
1.創建docker網絡:
docker network create crmeb
2.創建mysql服務
docker run -d --name mysql -v mysqldata:/var/lib/mysql -v mysqlconf:/etc/mysql/conf.d -v mysqllog:/var/log/mysql -p 3306:3306 --network crmeb -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
-d 后臺運行
–name 容器名
-v 數據卷
-p 端口映射
–network 網絡指定
-e 環境配置,這里指定了root用戶的密碼
3.創建redis服務
docker run --name redis --network crmeb -p 6379:6379 -d -e REDIS_PASSWORD=123456@1234 redis:latest
要遠程連接mysql、redis。需要去把服務器的安全組把3306,6379端口放出來才能訪問。不使用就禁用否則不安全
4.java應用鏡像構建:
創建一個Dockerfile的文件(名字必須叫這個)內容如下:
# 基礎鏡像
FROM eclipse-temurin:8
# 作者
MAINTAINER HDQ
# 工作目錄
WORKDIR /usr/local/java
# 同步docker內部的時間
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 設置時區
ENV TZ=Asia/Shanghai
EXPOSE 20700
# 復制jar包到/user/local/java下
ARG JAR_FILE
ADD ${JAR_FILE} ./Crmeb-admin.jar
ENTRYPOINT ["nohup","java","-Dspring.profiles.active=prod","-Dspring.config.location=/usr/local/java/application.yml,/usr/local/java/application-prod.yml","-jar","/usr/local/java/Crmeb-admin.jar",">","/usr/local/java/crmeb.log","&>","&"]
需要創建兩個,分別是admin和front的,改一下工作目錄和jar包的名字就可以了
5.Java項目打包
修改后打包生成
在服務器創建兩個文件夾分別是Java和Java1用來放打包后的jar包,Dockerfile和yml配置文件
上傳文件后在服務器上的java目錄和Java1目錄下,執行該命令
docker build -t crmeb:1 .
運行admin
docker run -d -it --name crmeb --network crmeb -v /usr/local/java:/usr/local/java -p 20700:20700 crmeb:1
運行front
docker run -d -it --name crmeb2 --network crmeb -v /usr/local/java1:/usr/local/java1 -p 20710:20710 crmeb2:1
前端準備
1.項目打包
平臺端和商戶端一樣的打包,需要先npm install安裝依賴然后在npm run build:prod打包
2.部署nginx
先在服務器上創建文件夾nginx和html
nginx配置:
user root;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
server {
listen 80;
server_name adminplat.xxx.cn;
root /usr/share/nginx/html/dist;
index index.html index.htm;
location / {
try_files $uri $uri/ /index.html;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
root /usr/share/nginx/html/dist;
expires 30d;
access_log off;
}
location = /404.html {
internal;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
internal;
}
}
server {
listen 80;
server_name adminmer.xxx.cn;
root /usr/share/nginx/html/dist1;
index index.html index.htm;
location / {
try_files $uri $uri/ /index.html;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
root /usr/share/nginx/html/dist1;
expires 30d;
access_log off;
}
location = /404.html {
internal;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
internal;
}
}
server {
listen 80;
server_name api.admin.xxx.cn;
location / {
proxy_pass http://41.11.192.0:20700;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location = /404.html {
internal;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
internal;
}
}
#}
server {
listen 80;
server_name h5.xxx.cn;
root /usr/share/nginx/html/h5;
index index.html index.htm;
location / {
try_files $uri $uri/ /index.html;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
root /usr/share/nginx/html/h5;
expires 30d;
access_log off;
}
location = /404.html {
internal;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
internal;
}
}
server {
listen 80;
server_name api.front.xxx.cn;
location / {
proxy_pass http://41.11.192.0:20710;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location = /404.html {
internal;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
internal;
}
}
}
運行nginx容器
docker run -d --name nginx --network crmeb -v /usr/local/nginx/html:/usr/share/nginx/html -v /usr/local/nginx/nginx.conf:/etc/nginx/nginx.conf -p 80:80 nginx:latest
運行的所有容器