gitlab-ci中遇到的问题

两个项目(docker容器)共享文件

需求概要

公司项目分为前台和后台项目.

后台项目发布流程,流程中包含的文档是存放在前台项目配置文件指定的路径

两个项目是分开的运行在独立的容器当中.

思路

查找资料,询问大神,最终有如下思路,docker  run 命令中有一个 -v 参数用于指定挂载到的宿主机目录

#run命令添加-v 参数,可以添加多个
#冒号前面的是宿主机目录,后面的是容器目录

-v /home/work_doc:/home/work_doc1 -v /home/deploy_doc:/home/deploy_doc1

这样就能够实现两个项目(容器)共享文件了

 

 

docker修改host文件

项目里的文档转化功能(好像是这个功能)需要用到别的文档转换服务器,需要把某个域名映射到某台服务器ip上,实现方法如下

采用的是链接中的第一个方法

https://cloud.tencent.com/developer/article/1175087

 

 

同一台服务器,安装两个Tomcat,同一路径不同端口号,同一浏览器下不能同时访问

gitflow使用时出现以下问题,同一个浏览器登录前台项目,后台项目,那么再切换到前台项目需要重新登录.

因为两个项目都是打得root.war包,项目访问不需要添加项目名,访问时只通过端口号区分.具体原因如下

https://blog.csdn.net/jiao5586/article/details/78626483

解决方案:ant打的war包名加上项目名.

 

windows和linux的文件路径

项目中之前是windows下的环境,所以代码中文件的路径会采用"\\"来写,但是如今是在linux环境中,所有"\\"要改为"/"

https://www.cnblogs.com/deng-c-q/p/9303343.html

 

 

定时清理垃圾容器和镜像

这里采用centos7自带的crontab来执行定时清理任务

 

测试crontab是否生效

crontab -e

文本中加入以下代码

#每1分钟打印日期到 /root/test.log
* * * * * echo `date` >> /root/test.log

再执行

tail -f /root/test.log

tail命令解释如下

https://www.cnblogs.com/mfryf/p/3336804.html

如果控制台每分钟打印当前时间,那么表示crontab功能正常

 

应用于镜像和容器清理

编辑定时任务

crontab -e

在文本内写上

#每周日6.00清理停止运行的容器
0 6 * * 0 docker container prune -f
#每周日6.05清理停止运行的单层镜像
5 6 * * 0 docker image prune -f
#每周日6.10清理停止运行的多层镜像
10 6 * * 0 docker images -q | xargs docker rmi 

保存即可

 

查看定时任务,即刚才在文本内编辑的内容

crontab -l

 

设置crontab开机自启

/etc/rc.d/rc.local这个文件是系统启动时自动运行的文件

授予可执行权限 
chmod +x /etc/rc.d/rc.local

在 /etc/rc.d/rc.local 脚本中加入 systemctl start crond.service

保存即可

 

容器内外时区同步问题

在测试环境发生一个问题,java的nowdate()方法获取的时间相比正常时间晚了8小时.

导致这样的原因是jvm没有配置时区,才造成容器内外时间不对

在dockerfile文件(构建镜像的文件)中,添加一步:

RUN echo "Asia/shanghai"  > /etc/timezone

设置时区为:上海

再次走ci,会发现容器时间和宿主机时间同步了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值