在Docker上部署springboot项目
一、docker安装
https://www.codezhou.top/article/docker使用
二、docker安装mysql、redis
docker查找相关镜像
sudo docker search mysql
拉取mysql镜像
docker pull mysql
运行mysql
docker run -d --name myMysql -p 9506:3306 -v /data/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7.31
参数解析:
-d:
-name myMysql
-p:
-v:
-e:
mysql:
docker 安装redis
sudo docker run --name Redis -p 8977:6379 -d redis
redis修改密码
sudo docker exec -it redis bash
redis-cli config set requirepass '密码'
修改后端Dockerfile配置文件
FROM openjdk:8
EVN SERVICE_JAR_FILE ${SERVICE_JAR_FILE}
ADD $SERVICE_JAR_FILE $SERVICE_JAR_FILE
RUN bash -c "touch /${SERVICE_JAR_FILE}"
ENTRYPOINT ["/bin/sh","-c","java -jar /usr/local/software/${SERVICE_JAR_FILE}"]
三、打包前、后端项目运行
后端
docker build -t service-common:1.0 .
docker run -d -p 8088:8088 -e SERVICE_JAR_FILE=xxx.jar -v /usr/local/software/xxx.jar:/usr/local/project/xxx.jar --name xxx service-common:1.0 --privileged=true
查看后端日志
docker logs xxx
docker logs -f --tail 200 xxx
前端
前端打包上传到服务器后解压
unzip dist.zip dist
启动前端服务
docker run --name nginx -p 80:80 -p 443:443 -v /work/nginx/nginx.conf:/etc/nginx/nginx/nginx.conf -v /work/nginx/html:/usr/share/nginx/ -v /work/nginx/log:/var/log/nginx -d nginx
nginx配置文件
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80
server_name abc.xyz.com;
rewrite ^(.*) https://${server_name}$1 permanent;
}
server {
listen 443 ssl http2;
server_name abc.xyz.com;
#charset utf-8;
ssl_certificate cert/xxx.crt;
ssl_certificate_key cert/xxx.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
alias /usr/share/nginx/html/dist/;
#root /work/nginx/html/dist;
try_files $uri $uri/ /index.html;
index index.html index.htm;
}
location /prod-api/ {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass https://turbonba.xkzx.work;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
# 开启gzip压缩
gzip on;
# 不压缩临界值,大于1K的才压缩,一般不用改
gzip_min_length 1k;
# 压缩缓冲区
gzip_buffers 16 64K;
# 压缩版本(默认1.1,前端如果是squid2.5请使用1.0)
gzip_http_version 1.1;
# 压缩级别,1-10,数字越大压缩的越好,时间也越长
gzip_comp_level 5;
# 进行压缩的文件类型
gzip_types text/plain application/x-javascript text/css application/xml application/javascript;
# 跟Squid等缓存服务有关,on的话会在Header里增加"Vary: Accept-Encoding"
gzip_vary on;
# IE6对Gzip不怎么友好,不给它Gzip了
gzip_disable "MSIE [1-6]\.";
}