两个项目(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,会发现容器时间和宿主机时间同步了