docker build

file_dockerfile

# Tomcat
# Version 0.0.1

# GET_IMAGE
FROM 192.168.0.216:5000/centos

# MAINTAINER_INFO
MAINTAINER hongxue hongxue@showjoy.com

# YUM
#RUN rpm -ivh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
#RUN yum clean all
RUN yum -y install net-tools openssh-server wget curl elinks vim-enhanced openssh-clients lsof rsync 

# SSH
RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
RUN sed -i 's/session    required     pam_loginuid.so/#session    required     pam_loginuid.so/g' /etc/pam.d/sshd
RUN mkdir /var/run/sshd

RUN echo "root:3dq2w3y2" | chpasswd
RUN mkdir /root/.ssh/
RUN echo "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAs+W8Wb/++MjXk3jndcF7676mjKlHJcPVoD2iTVTwvQEIFzn8D98PhJKp+BHwPbtjOrQr4LNlP7rBWFOK7tb4tLyTkcJVZ0s11Ovx0+OgIXpadstjKxSowW782FBiIL2nR3DKobWB26ccbC4xT0DFfctifdf4KN7B9ZO/owrAcFtIgAfmZtoAHrN5GktldazSvtYep79JW/sA3TV6a2LD9lNtnh5yA8+6qAwHLFkwqKYkiL7I7NEYVDET995OYpHowyG3kAgaYNNf69NAX1YqbmgjJsvpb8SPa31vp2S2ru8iIF5wP0O2VgpALK4PRuVN1VmOPTr2vtzNXXdXVKYB0w== root@hongxue_225" >> /root/.ssh/authorized_keys

# PORT
EXPOSE 22
EXPOSE 8080
EXPOSE 8009
EXPOSE 8005
EXPOSE 8443

# ADD Tomcat
ADD tomcat /usr/local/tomcats/tomcat

# ADD JDK
ADD java /usr/local/java

RUN echo "" >> /etc/profile
RUN echo "JAVA_HOME=/usr/local/java" >> /etc/profile
RUN echo "JAVA_BIN=/usr/local/java/bin" >> /etc/profile
RUN echo "PATH=$PATH:$JAVA_BIN" >> /etc/profile
RUN echo "CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar" >> /etc/profile
RUN echo "export JAVA_HOME JAVA_BIN PATH CLASSPATH" >> /etc/profile

# Start_All_Service
#RUN mkdir -p /var/log/supervisor
#COPY supervisord.conf /etc/supervisord.conf

#CMD ["/usr/bin/supervisord"]
CMD ["/usr/sbin/sshd","-D"]



file_build.sh

#!/bin/bash
server_addr="192.168.0.225"
server_file="/root/deploy/server_list.txt"
server_mod_CI="/root/deploy/ShowJoy-Module-CI.sh"

other_dir="/root/deploy/Other"
ui_dir="/root/deploy/UI"
service_dir="/root/deploy/Service"

local_addr=$(ifconfig eth0 | grep 'inet addr' | awk -F':' '{print $2}' | awk '{print $1}')
line=$(docker ps -a | grep -v 'CONTAINER ID' | wc -l)
ssh=$[$line * 10 + 10000]
http=$[$line * 10 + 10001]
shutdown=$[$line * 10 + 10002]
ajp=$[$line * 10 + 10003]
redirect=$[$line * 10 + 10004]

read -p "Please input service type [ jenkins|tomcat ] : " service_name
read -p "Please input item name : " name
docker run -d -it --name ${name} -v /etc/localtime:/etc/localtime:ro -p ${ssh}:22 -p ${http}:8080 -p ${shutdown}:8005 -p ${redirect}:8443 -p ${ajp}:8009 $service_name

if [ ${service_name} == "tomcat" ]
then
    ssh root@${server_addr} "echo ${name} ${server_addr} ${ssh} ${http} >> ${server_file}"
    read -p "Please input item type : [UI|Service|Other]:" type

    item_name=$(echo ${name} | awk -F'-' '{print $1}')
    case "${type}" in
        [Uu][Ii])
            ssh root@${server_addr} "cp -rf ${server_mod_CI} ${ui_dir}/ShowJoy-${item_name}-CI.sh"
            ssh root@${server_addr} "sed -i s/Host/${local_addr}/g ${ui_dir}/ShowJoy-${item_name}-CI.sh"
            ssh root@${server_addr} "sed -i s/Item/${name}/g ${ui_dir}/ShowJoy-${item_name}-CI.sh"
        ;;

        [Ss][Ee][Rr][Vv][Ii][Cc][Ee])
            ssh root@${server_addr} "cp -rf ${server_mod_CI} ${service_dir}/ShowJoy-${item_name}-CI.sh"
            ssh root@${server_addr} "sed -i s/Host/${local_addr}/g ${service_dir}/ShowJoy-${item_name}-CI.sh"
            ssh root@${server_addr} "sed -i s/Item/${name}/g ${service_dir}/ShowJoy-${item_name}-CI.sh"
        ;;

        [Oo][Tt][Hh][Ee][Rr])
            ssh root@${server_addr} "cp -rf ${server_mod_CI} ${other_dir}/ShowJoy-${item_name}-CI.sh"
            ssh root@${server_addr} "sed -i s/Host/${local_addr}/g ${other_dir}/ShowJoy-${item_name}-CI.sh"
            ssh root@${server_addr} "sed -i s/Item/${name}/g ${other_dir}/ShowJoy-${item_name}-CI.sh"
        ;;

        *)
            echo "Bad name!!! Tomcat type is a [ui|service|other]"
            exit 1;
        ;;
    esac
fi
时间: 2024-10-30 11:19:07

docker build的相关文章

docker build Dockfile不能执行cd命令

问题描述 Dockerfile:RUNapt-get-yqqupdateRUNapt-getinstallmakeRUNmkdir/var/redisCOPYredis-3.0.5.tar.gz/var/redis/RUNtar-zxvf/var/redis/redis-3.0.5.tar.gzRUNcd/var/redis/redis-3.0.5/&&make&&makeinstallADDredis-tools.deb/var/redisRUNcd/var/redis&

Docker multi-stage build机制

随着17.05版本的发布,Docker对于镜像构建这块也作了一项重要更新,那就是 multi-stage build(多阶段构建),这对于长期因为构建镜像太大而困扰的小伙伴们来说真是雪中送炭. 不支持多阶段构建 在17.05版本之前,我们构建Docker镜像时,通常会采用两种方式: 将所有的构建过程编写在同一个Dockerfile中,包括项目及其依赖库的编译.测试.打包等流程,这里可能会带来的一些问题: Dockerfile特别臃肿 镜像层次特别深 存在源码泄露的风险 稍微优雅的一种方式,就是我

谈谈 Docker Volume 之权限管理(一)

Volume数据卷是Docker的一个重要概念.数据卷是可供一个或多个容器使用的特殊目录,可以为容器应用存储提供有价值的特性: 持久化数据与容器的生命周期解耦:在容器删除之后数据卷中的内容可以保持.Docker 1.9之后引进的named volume(命名文件卷)可以更加方便地管理数据卷的生命周期:数据卷可以被独立地创建和删除. 数据卷可以用于实现容器之间的数据共享 可以支持不同类型的数据存储实现 Docker缺省提供了对宿主机本地文件卷的支持,可以将宿主机的目录挂载到容器之中.由于没有容器分

Docker with Spring Boot

前段时间在我厂卷爷的指导下将Docker在我的实际项目中落地,最近几个小demo都尽量熟悉docker的使用,希望通过这篇文章分享我截止目前的使用经验(如有不准确的表述,欢迎帮我指出).本文的主要内容是关于Java应用程序的docker化,首先简单介绍了docker和docker-compose,然后利用两个案例进行实践说明. 简单说说Docker,现在云计算领域火得一塌糊涂的就是它了吧.Docker的出现是为了解决PaaS的问题:运行环境与具体的语言版本.项目路径强关联,因此干脆利用lxc技术

Hexo 升级与 Docker 初体验

背景 之前我一直使用 Hexo 2.8 来编译我的博客.几个星期前的一天,我突发奇想要给 Hexo 来个升级,于是接下来的折腾就开始了. 执行了 npm install hexo-cli -g 之后,一切都还好,当我试着执行hexo server 启动服务器的时候,悲剧发生了,没法启动.一番 Google 之后发现从 2.8 升级到 3.0 似乎没那么平滑,于是我决定降回 2.8,然后另选时间升级. 降级之路也不平坦,即使我显式给出了降级之后各个组件的版本,整个依赖树也回不到从前了.可能这个也是

理解并使用Docker

本文并不是科普问,只是对Docker的一些个人理解,使用. 为什么使用Docker呢?一般程序员在搭建开发环境问题时,通常会遇到如下问题: 软件安装麻烦,系统环境不同,软件安装通过运维人员操作容易出现问题,因为不提供ssh权限,导致调试不便. 隔离性差,例如不同的开发人员如果在同一台主机环境下共享开发,虽然是用户隔离,但端口如果不规范可能会冲突:同一个Mysql如果权限管理不好很有可能误删别人的数据 可移植性差,例如和生产环境不一致,开发人员之间也无法共享:更严重的情况是当有新人入职时,通常需要

使用Docker搭建Java Web运行环境

一.Docker是干什么的 Docker 是一个基于Linux容器(LXC-linux container)的高级容器引擎,基于go语言开发, 源代码托管在 Github 上, 遵从Apache2.0协议开源.Docker的目标是实现轻量级的操作系统虚拟化解决方案. 学习Docker首先要了解几个概念: 镜像-Docker的镜像和常见的系统ISO镜像类似,包含了应用程序的信息: 容器-容器相当于一个可以运行起来的虚拟机,应用程序运行在容器中,Docker运行在"Docker"上: 仓库

搭建基于Docker的PHP开发环境的详细教程

  这篇文章主要介绍了搭建基于Docker的PHP开发环境的详细教程,Docker是当下虚拟机技术的最佳选择,需要的朋友可以参考下 现在很多开发者都使用Vagrant来管理他们的虚拟机开发环境,Vagrant确实很酷, 不过也有不少缺点(最主要的是它占用太多的资源).在容器技术.Docker和更多类Docker技术出现后,解决这个问题就变得简单了. 免责声明 由于boot2docker的工作方式,本文所述的方法在你的环境中可能无法正常运行.如果需要在非Linux环境下共享文件夹到Docker容器

在Docker中自动化部署Ruby on Rails的教程

  这篇文章主要介绍了在Docker中部署Ruby on Rails的教程,Docker是当下最火的虚拟机,而本文所介绍的Ruby on Rails的部署则充分利用了Ruby中的rake这一炫酷的实现自动化的方法,需要的朋友可以参考下 基本的Rails应用程序 现在让我们启动一个基本的Rails应用.为了更好的展示,我使用Ruby 2.2.0和Rails 4.1.1 在终端运行: ? 1 2 $ rvm use 2.2.0 $ rails new && cd docker-test 创建一