需求(运维相关)
需要将项目通过镜像发布到服务器中,然后将日志链接到granfa当中去。
所需要的技术以及步骤
技术:
docker命令
auto-config插件的使用
linux环境命令
步骤:
- 将后端项目通过指定的配置文件进行打包(配置了auto-config插件),命令是
mvn clean install -Dmaven.test.skip=true -Dautoconfig.userProperties=/Users/xxx/xxx/application.properties
后面跟着你的指定配置文件的路径(这里怎么配置这个插件去使用可以自行百度,出了错误就检查哪里写错了就可以了)
- 打包完成之后需要配置一个Dockerfile去打包镜像,一般通用的dockerfile
FROM java:8
COPY *.jar /app.jar
CMD ["–server.port=8080"]
EXPOSE 8080
ENTRYPOINT [“java”,"-jar",“app.jar”]
- 通过scp命令去传输这些文件到服务器上去,我这里需要先经过跳板机,所以先传到跳板机然后再传到服务上去,如果显示没有权限的话就可以先传输到/tmp临时的文件存储区,然后再进行发送
scp /Users/xxx/Desktop/xxx 服务器地址:/tmp
如果传输的是一个文件夹的话就加一个-r循环读取就可以了
- 进入到服务器当中,将Dockerfile和项目的jar包放到一个文件夹里面,然后直接运行docker build打包成镜像,之后run一下就可以制作完成,可以使用-v命令将日志输出挂载到服务器当中,否则就一直在容器当中
- 前端项目是通过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,这里就不一一列出来了