準(zhǔn)備工作:
購(gòu)買(mǎi)服務(wù)器、購(gòu)買(mǎi)域名并備案、解析出需要用的域名
h5:h5.xxx.cn
平臺(tái)端:adminplat.xxx.cn
商戶(hù)端:adminmer.xxx.cn
front api:api.front.xxxcn
admin api:api.admin.xxx.cn
連接上服務(wù)器后的第一步先重裝一下docker,因?yàn)橘?gòu)買(mǎi)服務(wù)器選擇的docker版本低,運(yùn)行java容器可能會(huì)報(bào)內(nèi)存不足。
重裝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
- 設(shè)置開(kāi)機(jī)自啟:
systemctl enable docker.service
在拉取鏡像的時(shí)候如果報(bào)錯(cuò)了可以配置一下鏡像倉(cāng)庫(kù)
vi /etc/docker/daemon.json
阿里云內(nèi)容如下:
{
"registry-mirrors":["https://6kx4zyno.mirror.aliyuncs.com"]
}
重啟
systemctl daemon-reload
systemctl restart docker
部署
后端準(zhǔn)備
1.創(chuàng)建docker網(wǎng)絡(luò):
docker network create crmeb
2.創(chuàng)建mysql服務(wù)
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 后臺(tái)運(yùn)行
–name 容器名
-v 數(shù)據(jù)卷
-p 端口映射
–network 網(wǎng)絡(luò)指定
-e 環(huán)境配置,這里指定了root用戶(hù)的密碼
3.創(chuàng)建redis服務(wù)
docker run --name redis --network crmeb -p 6379:6379 -d -e REDIS_PASSWORD=123456@1234 redis:latest
要遠(yuǎn)程連接mysql、redis。需要去把服務(wù)器的安全組把3306,6379端口放出來(lái)才能訪問(wèn)。不使用就禁用否則不安全
4.java應(yīng)用鏡像構(gòu)建:
創(chuàng)建一個(gè)Dockerfile的文件(名字必須叫這個(gè))內(nèi)容如下:
# 基礎(chǔ)鏡像
FROM eclipse-temurin:8
# 作者
MAINTAINER HDQ
# 工作目錄
WORKDIR /usr/local/java
# 同步docker內(nèi)部的時(shí)間
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 設(shè)置時(shí)區(qū)
ENV TZ=Asia/Shanghai
EXPOSE 20700
# 復(fù)制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","&>","&"]
需要?jiǎng)?chuàng)建兩個(gè),分別是admin和front的,改一下工作目錄和jar包的名字就可以了
5.Java項(xiàng)目打包
修改后打包生成
在服務(wù)器創(chuàng)建兩個(gè)文件夾分別是Java和Java1用來(lái)放打包后的jar包,Dockerfile和yml配置文件
上傳文件后在服務(wù)器上的java目錄和Java1目錄下,執(zhí)行該命令
docker build -t crmeb:1 .
運(yùn)行admin
docker run -d -it --name crmeb --network crmeb -v /usr/local/java:/usr/local/java -p 20700:20700 crmeb:1
運(yùn)行front
docker run -d -it --name crmeb2 --network crmeb -v /usr/local/java1:/usr/local/java1 -p 20710:20710 crmeb2:1
前端準(zhǔn)備
1.項(xiàng)目打包
平臺(tái)端和商戶(hù)端一樣的打包,需要先npm install安裝依賴(lài)然后在npm run build:prod打包
2.部署nginx
先在服務(wù)器上創(chuàng)建文件夾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;
}
}
}
運(yùn)行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
運(yùn)行的所有容器