Docker部署管理我们的项目,不用再自己Deploy啦
一、准备文件夹
创建原文件夹和镜像文件夹:
mkdir -p /docker/project /docker/mirror
放入你要使用的jar包和外置配置文件,如xxx.jar, application.yml 和 application-prod.yml
二、新建Dockerfile
放入原文件夹内,和xxx.jar,application.yml等文件同目录下
#指定操作的镜像
FROM java:8
#维护者信息
MAINTAINER coin
#环境信息
ENV LANG C.UTF-8
#执行命令:创建目录,/project为镜像内的目录,yml文件有几个加几个
#xxx.jar是你要执行的项目jar包
RUN mkdir -p /project
ADD xxx.jar /project
ADD application.yml /project
ADD application-prod.yml /project
#设置时区
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/localtime
#暴露端口
EXPOSE 9099
#启动时运行jar包
ENTRYPOINT java -Dfile.encoding=utf-8 -jar /project/XXX.jar --spring.config.location=/project/application.yml
三、Nginx新增Server
以下监听端口和server-name随意起,一会儿是你访问的前端地址,比如http://server-name:12356/index,以下是要添加的server配置,ip要使用数字ip,禁止localhost,因为你的服务部署到docker镜像中,配置localhost会找不到。port为Dockerfile暴露的端口,如上面Dockerfile的9099
server {
listen 12356;
server_name server-name;
root html;
location / {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Credentials' 'true';
add_header Accept-Ranges bytes;
root /project/zk/web/zk-web;
index /index.html;
try_files $uri $uri/ @router;
expires off;
}
location @router{
rewrite ^.*$ /index.html last;
}
location /dev-api/ {
add_header 'Access-Control-Allow-Origin' '*';
proxy_connect_timeout 4s;
proxy_read_timeout 7200s;
proxy_send_timeout 12s;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://ip:port/;
}
}
四、构建并运行项目
构建项目
docker build -t 项目名
运行项目
docker run --privileged=true -d -p 9099:9099 --restart=always -v /docker/mirror:/project --name 项目名1 项目名2
命令行详解
9099是端口名,前面的9099是服务器端口,后面的9099是docker端口
/docker/mirror是之前新建的镜像文件夹地址,/project是容器内地址
--name 为指定项目名,项目名1为容器内名称 项目名2为服务器内名称,我们看到的是项目名2
五、查看容器运行
进入portainer容器可视化管理界面,查看项目启动情况,也可读取运行日志