将前后端项目通过docker运行到服务器中的详细步骤以及出现的问题解决方案

需求(运维相关)

需要将项目通过镜像发布到服务器中,然后将日志链接到granfa当中去。

所需要的技术以及步骤

技术:

docker命令
auto-config插件的使用
linux环境命令

步骤:

  1. 将后端项目通过指定的配置文件进行打包(配置了auto-config插件),命令是

mvn clean install -Dmaven.test.skip=true -Dautoconfig.userProperties=/Users/xxx/xxx/application.properties
后面跟着你的指定配置文件的路径(这里怎么配置这个插件去使用可以自行百度,出了错误就检查哪里写错了就可以了)

  1. 打包完成之后需要配置一个Dockerfile去打包镜像,一般通用的dockerfile

FROM java:8
COPY *.jar /app.jar
CMD ["–server.port=8080"]
EXPOSE 8080
ENTRYPOINT [“java”,"-jar",“app.jar”]

  1. 通过scp命令去传输这些文件到服务器上去,我这里需要先经过跳板机,所以先传到跳板机然后再传到服务上去,如果显示没有权限的话就可以先传输到/tmp临时的文件存储区,然后再进行发送

scp /Users/xxx/Desktop/xxx 服务器地址:/tmp
如果传输的是一个文件夹的话就加一个-r循环读取就可以了

  1. 进入到服务器当中,将Dockerfile和项目的jar包放到一个文件夹里面,然后直接运行docker build打包成镜像,之后run一下就可以制作完成,可以使用-v命令将日志输出挂载到服务器当中,否则就一直在容器当中
  2. 前端项目是通过nginx镜像去启动前端项目,需要一个nginx的配置去启动,通用的配置如下
server {
  listen       80;
  server_name  localhost;

  location ~ ^/xxx/* {
    proxy_pass http://localhost:8080;
  }

  location / {
    try_files $uri $uri/ /index.html;
    root /usr/xxx/xxx;
    index index.html index.htm;
  }

  error_page   500 502 503 504  /50x.html;
  location = /50x.html {
    root   /usr/share/nginx/html;
  }
}

nginx反向代理的配置,将80端口的请求转发到8080端口,打包命令和之前是一样的,只需要启动nginx镜像的时候将这个default.conf挂载到容器当中就可以了
6. 在前端配置的时候出现的问题:

直接报403的原因是nginx的默认配置文件nginx.conf当中使用的是user nginx或者是user nobody,会导致没有权限去启动,

然后就是项目502是因为服务器的seLinux的默认是严谨模式,需要的 /etc/seLinux当中修改conf的seLinux的默认值为disabled,之后需要重启。但是你也可以先暂时将这个关掉,命令是setenforce 0关掉,然后将配置文件的localhost改为服务器的域名,这样就会解决网关限制问题

具体如何挂载数据卷这类的docker命令大家可以自己去学一下docker,这里就不一一列出来了

猜你喜欢

转载自blog.csdn.net/xiaole060901/article/details/112859785
今日推荐