最近使用到springboot,其中涉及到docker部署。本次搭建为前后端文件分享的形式。
为了使docker 容器都在同一网段,使用命令创建虚拟网络
docker network create --subnet=172.25.0.0/24 docker_default
1、编写dockerfile 文件
FROM java:latest
ARG JAR_FILE=./jar/*.jar
COPY ${JAR_FILE} /home/webapp/jar/app.jar
COPY ./jar/lib/ /home/webapp/jar/lib/
ENV TZ=Asia/Shanghai
ENTRYPOINT ["java","-Dloader.path=/home/webapp/jar/lib/","-jar","/home/webapp/jar/app.jar","--spring.profiles.active=prod"]
生成应用镜像
docker build -t webapp:2.0.0 .
启动镜像
docker run -d \
--name webapp \
--net docker_default \
--ip 172.25.0.12 \
-p 8000:8000 \
-e "TZ=Asia/Shanghai" \
-v ~/www/webapp/data/:/home/webapp/ \
-v ~/www/webapp/jar:/home/webapp/jar \
webapp:2.0.0
此时正常启动的话,可以访问到java程序了
2、nginx服务器配置
拉取最新镜像
docker pull nginx
配置虚拟主机
server{
listen 80;
server_name java.test;
index index.html;
root /usr/share/nginx/html/webapp/dist; #前端静态文件上传的路径
# 避免访问出现 404 错误
location / {
try_files $uri $uri/ @router;
index index.html;
}
location @router {
rewrite ^.*$ /index.html last;
}
# 接口
location /api {
proxy_pass http://172.25.0.12:8000; #对应java启动的地址
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
启动nginx docker 容器
docker run -itd --name gdtjj_nginx --net docker_default \
--ip 172.25.0.13 -p 80:80 --restart=always \
-v ~/www/webapp/nginx/conf.d:/etc/nginx/conf.d \
-v ~/www/webapp/nginx/logs:/var/log/nginx \
-v ~/www/webapp/nginx/cert:/etc/nginx/cert \
-v ~/www/webapp/nginx/html:/usr/share/nginx/html \
--link gdtjj_webapp:webapp nginx
配置完成后重启,即可访问绑定的java.test 了