使用Docker部署并管理项目

139 阅读2分钟

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容器可视化管理界面,查看项目启动情况,也可读取运行日志