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介绍 ...
随机推荐
- python asyncio
3. 真-官网文档 ----超级全 http://aiohttp.readthedocs.io/en/stable/client.html#make-a-request 2. 官网文档: htt ...
- poj3253 Fence Repair(贪心+哈夫曼 经典)
https://vjudge.net/problem/POJ-3253 很经典的题,运用哈夫曼思想,想想很有道理!! 具体实现还是有点绕人,最后被long long卡了一下,看数据大小的时候单纯相乘了 ...
- nvidia-smi命令输出详解
nvidia-smi命令输出如下: +-----------------------------------------------------------------------------+ | ...
- iOS:给标签栏控制器的UITabbarItem添加点击动效
一.介绍 现在很多app,附带很炫的点击效果,让用户享受到非常棒的体验,例如动画.渐变.音效等. 当然,市面上大多数app的标签栏点击还是挺中规中矩的,只是切换图片而已.然而,这个是可以优化的,附带点 ...
- Hadoop Ls命令添加显示条数限制參数
前言 在hadoop的FsShell命令中,预计非常多人比較经常使用的就是hadoop fs -ls,-lsr,-cat等等这种与Linux系统中差点儿一致的文件系统相关的命令.可是细致想想,这里还是 ...
- 使用AShot进行网页全页截图
import org.junit.Test; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.Chrom ...
- 每天一个linux命令(7):mv
1.命令简介 mv(Move file)将源文件重命名为目标文件,或将源文件移动至指定目录.. 2.用法 mv [选项]... [-T] 源文件 目标文件 或:mv [选项]... 源文件... 目录 ...
- K-means算法原理
聚类的基本思想 俗话说"物以类聚,人以群分" 聚类(Clustering)是一种无监督学习(unsupervised learning),简单地说就是把相似的对象归到同一簇中.簇内 ...
- Effective Java 第三版——67. 明智谨慎地进行优化
Tips 书中的源代码地址:https://github.com/jbloch/effective-java-3e-source-code 注意,书中的有些代码里方法是基于Java 9 API中的,所 ...
- 基于Spring aop写的一个简单的耗时监控
前言:毕业后应该有一两年没有好好的更新博客了,回头看看自己这一年,似乎少了太多的沉淀了.让自己做一个爱分享的人,好的知识点拿出来和大家一起分享,一起学习. 背景: 在做项目的时候,大家肯定都遇到对一些 ...