gitlab-ci + k8s 之docker (三)
docker
在本系列(一)中(https://www.cnblogs.com/huandada/p/9965771.html)的runner_tomcat.sh脚本有涉及到镜像的推送,本文主要记录整个镜像的制作。
镜像版本
由于应用需要图片的展示,故选用 tomcat:7.0.90-jre7-alpine 与 tomcat:8.0.53-jre8。
tomcat:8.0.53-jre8:流量管家在内的三个项目,没有图片应用
tomcat:7.0.90-jre7-alpine:其他项目
镜像优化
首先对镜像预先做优化,以下优化只针对于tomcat:7.0.90-jre7-alpine,此次优化所得的镜像普遍适用于多个项目
时间同步
docker与宿主机的时间同步:docker与宿主机的时区不一样,导致相差8小时。宿主机是CST,docker是UTC:
将宿主机的/usr/share/zoneinfo/Asia/Shanghai文件放置于docker的/etc/localtime下。
此时,date查看时间正确,但是查看日志的时间还是与date时间相差8h。
java日志时间同步:
在tomcat/bin/catalina.sh,添加
JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF8 -Duser.timezone=GMT+08"
tomcat启动时间优化
linux或者部分unix系统提供随机数设备是/dev/random 和/dev/urandom ,
两个有区别,urandom安全性没有random高,但random需要时间间隔生成随机数。jdk默认调用random。
将jdk1.x.x_xx/jre/lib/security/java.security 以下参数改为securerandom.source=file:/dev/./urandom 减少启动时间。
工作目录
所定义的工作目录为一进容器就所在的目录,alpine需要定义,另一个版本官方已经定义好了
定义环境变量与cmd
cmd会在容器启动一个进程,此进程没了,容器消亡,alpine需要定义,另一个版本官方已经定义好了
优化命令
建build目录,将需要的与改好的文件放在/root/build/下
mkdir /root/build/
cp /usr/share/zoneinfo/Asia/Shanghai /root/build/
创建Dockerfile
vim /root/build/Dockerfile
FROM tomcat:7.0.90-jre7-alpine
ADD Shanghai /etc/localtime
RUN sed -i '/cygwin=false/i\JAVA_OPTS=" -Dfile.encoding=UTF8 -Duser.timezone=GMT+08"' /opt/apache-tomcat-7.0.69/bin/catalina.sh \
&& sed -i 's/securerandom.source=file:\/dev\/random/securerandom.source=file:\/dev\/.\/urandom/g' /opt/jdk1.7.0_80/jre/lib/security/java.security
WORKDIR /opt/apache-tomcat-7.0.69
ENV PATH=/opt/apache-tomcat-7.0.69/bin:$PATH
CMD ["catalina.sh", "run"]
使用Dockerfile生成新镜像
cd /root/build/ && docker build -t tomcat:7.0.90-jre7-alpine-v1 .
应用镜像的生成
主要是放置数据库连接文件context.xml与war包
cd /test_project/test-backend/ && vim Dockerfile
FROM tomcat:7.0.90-jre7-alpine-v1
COPY test.war /opt/apache-tomcat-7.0.69/webapps/
COPY context.xml /opt/apache-tomcat-7.0.69/conf/
本系列(一)runner_tomcat.sh有根据此Dockerfile打包并推送到阿里云镜像服务器命令。
gitlab-ci + k8s 之docker (三)的更多相关文章
- .Net Core自动化部署系列(三):使用GitLab CI/CD 自动部署Api到Docker
之前写过使用Jenkins实现自动化部署,最近正好没事研究了下GitLab的自动化部署,顺便记录一下. 使用GitLab部署我们需要准备两件事,第一个起码你得有个GitLab,自己搭建或者使用官方的都 ...
- k8s Gitlab CI/CD 之自动编译Docker镜像并推送到指定的Registry
环境介绍: 说明 节点 ip 系统 Gitlab Server git.ds.com 10.0.1.179 CentOS 7.5.1804 Gitlab Runner 10.0.1.178 Cen ...
- Gitlab CI 自动部署 asp.net core web api 到Docker容器
为什么要写这个? 在一个系统长大的过程中会经历不断重构升级来满足商业的需求,而一个严谨的商业系统需要高效.稳定.可扩展,有时候还不得不考虑成本的问题.我希望能找到比较完整的开源解决方案来解决持续集成. ...
- Ubuntu & GitLab CI & Docker & ASP.NET Core 2.0 自动化发布和部署(1)
相关博文: Ubuntu 简单安装和配置 GitLab Ubuntu 简单安装 Docker Ubuntu Docker 简单安装 GitLab Ubuntu Docker 安装和配置 GitLab ...
- Ubuntu & GitLab CI & Docker & ASP.NET Core 2.0 自动化发布和部署(2)
上一篇:Ubuntu & GitLab CI & Docker & ASP.NET Core 2.0 自动化发布和部署(1) 服务器版本 Ubuntu 16.04 LTS. 本 ...
- 【持续集成】GitLab CI + Docker 实现持续集成
GitLab CI + Docker 实现持续集成 一.持续集成(Continuous Integration, CI)的基本概念 概述 在传统软件的开发中,代码的集成工作通常是在所有人都将工作完成后 ...
- Docker Gitlab CI 部署 Spring Boot 项目
目前在学习这一块的内容,但是可能每个人环境都不同,导致找不到一篇博客能够完全操作下来没有错误的,所以自己也写一下,记录一下整个搭建的过程. Docker 的安装这里就不赘述了,基本上几行命令都可以了, ...
- Ubuntu Docker 安装和配置 GitLab CI 持续集成
相关文章: Ubuntu Docker 简单安装 GitLab 劈荆斩棘:Gitlab 部署 CI 持续集成 目的:在 Ubuntu 服务器上,使用 Docker 安装和配置 GitLab Runne ...
- Windows 下 docker 部署 gitlab ci
一.安装 1. 安装 docker Docker下载 注意:Windows 10 家庭版获取 之前的版本不能直接安装 Docker ,而是需要去安装 Docker Toolbox 我这里安装的是 Do ...
- Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之flanneld网络介绍及部署(三)
0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.flanneld介绍 ...
随机推荐
- Hibernate(5)session的方法
1. Session缓存 Session缓存(Hibernate一级缓存),在 Session 接口的实现中包含一系列的 Java 集合, 这些 Java 集合构成了 Session 缓存.只要 Se ...
- OBDII Interface Project Source Code
http://www.oocities.org/sstandfast/OBDII.htm 1 // File: VPWM.jal // Author: Shawn Standfast // Versi ...
- linux 新建用户、用户组 以及为新用户分配权限(转)
本文转自https://www.cnblogs.com/clicli/p/5943788.html 感谢作者 Linux 系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先 ...
- mysql 创建用户命令-grant
我们在使用mysql的过程中,经常需要对用户授权(添加,修改,删除),在mysql当中有三种方式实现 分别是 INSERT USER表的方法.CREATE USER的方法.GRANT的方法.今天主要看 ...
- android平台修改默认语言的那点事
转自:https://blog.csdn.net/qinghua0706/article/details/8243858 最近开始做智能机,用的是展讯6820平台,第一个需求就是改默认语言,一般碰到不 ...
- .Net转Java.01.从Main(main)函数说起
在C#中,main函数的签名可以有四种 static void Main(string[] args)static void Main()static int Main(string[] args)s ...
- 学习ReentrantLock
1. 使用ReentrantLock import java.util.concurrent.locks.ReentrantLock; public class TestReentrantLock { ...
- Elasticsearch集成HanLP分词器-个人学习
1.通过git下载分词器代码. 连接如下:https://gitee.com/hualongdata/hanlp-ext hanlp官网如下:http://hanlp.linrunsoft.com/ ...
- Unity应用架构设计(9)——构建统一的 Repository
谈到 『Repository』 仓储模式,第一映像就是封装了对数据的访问和持久化.Repository 模式的理念核心是定义了一个规范,即接口『Interface』,在这个规范里面定义了访问以及持久化 ...
- Linux下统计当前文件夹下的文件个数、目录个数
统计当前文件夹下文件的个数,包括子文件夹里的 ls -lR|grep "^-"|wc -l 统计文件夹下目录的个数,包括子文件夹里的 ls -lR|grep "^d&qu ...