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 (三)的更多相关文章

  1. .Net Core自动化部署系列(三):使用GitLab CI/CD 自动部署Api到Docker

    之前写过使用Jenkins实现自动化部署,最近正好没事研究了下GitLab的自动化部署,顺便记录一下. 使用GitLab部署我们需要准备两件事,第一个起码你得有个GitLab,自己搭建或者使用官方的都 ...

  2. 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 ...

  3. Gitlab CI 自动部署 asp.net core web api 到Docker容器

    为什么要写这个? 在一个系统长大的过程中会经历不断重构升级来满足商业的需求,而一个严谨的商业系统需要高效.稳定.可扩展,有时候还不得不考虑成本的问题.我希望能找到比较完整的开源解决方案来解决持续集成. ...

  4. Ubuntu & GitLab CI & Docker & ASP.NET Core 2.0 自动化发布和部署(1)

    相关博文: Ubuntu 简单安装和配置 GitLab Ubuntu 简单安装 Docker Ubuntu Docker 简单安装 GitLab Ubuntu Docker 安装和配置 GitLab ...

  5. Ubuntu & GitLab CI & Docker & ASP.NET Core 2.0 自动化发布和部署(2)

    上一篇:Ubuntu & GitLab CI & Docker & ASP.NET Core 2.0 自动化发布和部署(1) 服务器版本 Ubuntu 16.04 LTS. 本 ...

  6. 【持续集成】GitLab CI + Docker 实现持续集成

    GitLab CI + Docker 实现持续集成 一.持续集成(Continuous Integration, CI)的基本概念 概述 在传统软件的开发中,代码的集成工作通常是在所有人都将工作完成后 ...

  7. Docker Gitlab CI 部署 Spring Boot 项目

    目前在学习这一块的内容,但是可能每个人环境都不同,导致找不到一篇博客能够完全操作下来没有错误的,所以自己也写一下,记录一下整个搭建的过程. Docker 的安装这里就不赘述了,基本上几行命令都可以了, ...

  8. Ubuntu Docker 安装和配置 GitLab CI 持续集成

    相关文章: Ubuntu Docker 简单安装 GitLab 劈荆斩棘:Gitlab 部署 CI 持续集成 目的:在 Ubuntu 服务器上,使用 Docker 安装和配置 GitLab Runne ...

  9. Windows 下 docker 部署 gitlab ci

    一.安装 1. 安装 docker Docker下载 注意:Windows 10 家庭版获取 之前的版本不能直接安装 Docker ,而是需要去安装 Docker Toolbox 我这里安装的是 Do ...

  10. Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之flanneld网络介绍及部署(三)

    0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.flanneld介绍 ...

随机推荐

  1. JAVA的基本数据类型和类型转换

    一.数据类型 java是一种强类型语言,第一次申明变量必须说明数据类型,第一次变量赋值称为变量的初始化. java数据类型分为基本数据类型和引用数据类型 基本数据类型有4类8种 第一类(有4种)整型: ...

  2. 利用百度OCR实现验证码自动识别

    在爬取网站的时候都遇到过验证码,那么我们有什么方法让程序自动的识别验证码呢?其实网上已有很多打码平台,但是这些都是需要money.但对于仅仅爬取点数据而接入打码平台实属浪费.所以百度免费ocr正好可以 ...

  3. HA主备路由模式的原理 + HA和负载均衡的区别

       HA主备路由模式的原理 HA是High Availability缩写,即高可用性 ,可防止网络中由于单个防火墙的设备故障或网络故障导致网络中断,保证网络服务的连续性和安全强度.目前,ha功能已经 ...

  4. 常见爬虫/BOT对抗技术介绍(一)

    爬虫,是大家获取互联网公开数据的有效手段.爬虫.反爬虫技术.反-反爬虫技术随着互联网的不断发展,也在不断发展更新, 本文简要介绍现代的爬虫/BOT对抗技术,如有疏漏,多谢指正! 一.反爬虫/BOT技术 ...

  5. 分布式环境中,模块数据交互协议分析 (百度brpc)

    1. 背景 之前听到同事说,要为自己的模块考虑写个数据协议.今天有空想了一下.写出来,方便后续使用. 开源代码brpc中可以支持多种协议,nshead.redis.mongo等20多种协议. 2. 什 ...

  6. java-算法-排列组合

    package com.qinghuainvest.utils.algorithm; import java.util.ArrayList; import java.util.Arrays; impo ...

  7. 终于考完PMP

    快到年底,上手了GO语言,搞定了广告后台,觉得年底前应该不忙; 我们的PM也报了PMP,可以一起报团学习,后来由于地理位置关系,我们项目组,三个人报了不同的班,也好,信息可以共享; 跟我们公司合作的培 ...

  8. Project with Match in aggregate not working in mongodb

    [问题] 2down votefavorite I am trying to fetch data based on some match condition. First I've tried th ...

  9. Jenkins持续集成 入门实践

    本文测试环境: ASP.NET MVC项目,Windows 7环境,SVN代码仓库, MSBuild,TortoiseSVN 持续集成这种工具很多了,Jenkins比较常用,他的原理就是一个服务,有一 ...

  10. MySQL 支持的数据类型

    1.数值类型 MySQL 支持所有标准 SQL 中的数值类型,其中包括严格数值类型(integer.smallint.decimal.numeric),以及近似数值数据类型(float.real.do ...