dockerfile

[toc]

1.例子

 1# 选择一个已有的os镜像作为基础
 2FROM docker.io/centos:7.4.1708 
 3 
 4# 镜像的作者
 5MAINTAINER xuchenbing
 6
 7#配置阿里的yum源,删除系统自带的yum源
 8RUN rm -rf /etc/yum.repos.d/CentOS7-Base-163.repo
 9#将阿里的yum文件复制进去
10COPY CentOS7-Base-163.repo /etc/yum.repos.d/CentOS7-Base-163.repo
11#设置亚洲时区
12RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
13#安装openssh-server
14RUN yum install -y openssh-server \
15    #修改配置 
16    && sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config \
17    #安装openssh-clients
18    && yum  install -y openssh-clients \
19    #修改root密码
20    && echo "root" | passwd --stdin root \
21    #生成密钥
22    && ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key \
23    && ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key \
24	&& ssh-keygen -t ecdsa -b 256 -f /etc/ssh/ssh_host_ecdsa_key \
25	&& ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key \
26    #清除yum安装缓存
27    && yum clean all
28
29
30#设置支持中文字符
31RUN locale \
32    && localedef -i zh_CN -c -f UTF-8 zh_CN.UTF-8 \
33    && echo "export LC_ALL=zh_CN.UTF-8" >> /etc/profile && source /etc/profile \
34ENV LANG zh_CN.UTF-8
35ENV LC_CTYPE zh_CN.UTF-8
36#暴露22端口
37EXPOSE 22
38
39
40
41## java环境的  已经在外面配置好的  
42COPY jdk /home/jdk
43ENV JAVA_HOME=/home/jdk
44ENV PATH=$JAVA_HOME/bin:$PATH
45ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
46
47## MAVEN的环境
48COPY apache-maven-3.3.9 /home/apache-maven-3.3.9
49ENV MAVEN_HOME=/home/apache-maven-3.3.9
50ENV PATH=$MAVEN_HOME/bin:$PATH
51
52
53
54#svn的环境
55run yum install -y subversion
56
57#git的环境
58run yum install -y git
59
60
61
62#jenkins 搭建
63COPY jenkins.war /root/jenkins.war
64COPY .jenkins/ /root/.jenkins
65EXPOSE 8888
66
67#ssh进入后还有 env设置的饿变量	
68Run echo "export $(cat /proc/1/environ |tr '\0' '\n' | xargs)" >> /etc/profile
69
70WORKDIR  /root
71#执行后台启动ssh服务命令
72#RUN ["/bin/sh","/usr/sbin/sshd", "-D"]
73RUN echo -e "#!/bin/sh" >> /root/a.sh
74RUN echo -e "/usr/sbin/sshd -D &" >> /root/a.sh
75RUN echo -e "nohup java -jar jenkins.war --httpPort=8888 > /root/jenkin.log 2>&1 &" >> /root/a.sh
76RUN echo -e "/bin/bash" >> /root/a.sh
77RUN chmod +x /root/a.sh
78ENTRYPOINT ["/bin/sh","/root/a.sh"]
79
80
81
82#USER root 
83#ARG dockerGid=999 
84#RUN echo "docker:x:${dockerGid}:jenkins" >> /etc/group
85#RUN echo "jenkins ALL=NOPASSWD: ALL" >> /etc/sudoers