Dockerfile多工程构建以及启动脚本(docker容器之间使用link通信)

Dockerfile多工程构建以及启动脚本(docker容器之间使用link通信)

业务需要给用户准备一个随时部署的demo,多工程构建到一个镜像,并打包提供启动脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
FROM centos:centos7
MAINTAINER humingfeng
# 1.准备工作创建文件夹
RUN \
mkdir -p /usr/local
# 复制文件
COPY jdk-7u80-linux-x64.tar.gz /usr/local
COPY apache-tomcat-7.0.91-auth.tar.gz /usr/local
COPY apache-tomcat-7.0.91-tdesop.tar.gz /usr/local
COPY redis-5.0.0.tar.gz /usr/local
COPY redis.conf /usr/local
#安装vim编辑器
RUN yum -y install vim && yum -y install gcc automake autoconf libtool make
# 安装JDK
RUN \
cd /usr/local \
&& tar -xzf jdk-7u80-linux-x64.tar.gz
# 安装redis
RUN \
yum install gcc -y \
&& cd /usr/local \
&& tar -xzf redis-5.0.0.tar.gz \
&& rm -rf redis-5.0.0.tar.gz \
&& cd redis-5.0.0 && yum -y install tcl && make && make install \
&& cd /usr/local \
&& cp redis.conf redis-5.0.0/src \
&& rm -rf /var/cache/yum/*
# 解压tomcat
RUN \
cd /usr/local \
&& tar -xzf apache-tomcat-7.0.91-auth.tar.gz \
&& tar -xzf apache-tomcat-7.0.91-tdesop.tar.gz
#设置工作访问时候的WORKDIR路径,登陆落脚点
ENV MYPATH /usr/local
WORKDIR $MYPATH
# 配置java与tomcat环境变量
ENV JAVA_HOME /usr/local/jdk-7u80-linux-x64
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH $PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin

EXPOSE 8080 8081 6379
ENTRYPOINT /usr/local/redis-5.0.0/src/redis-server redis.conf && /usr/local/apache-tomcat-7.0.91-tdesop/bin/startup.sh && /usr/local/apache-tomcat-7.0.91-auth/bin/startup.sh && tail -f /usr/local/apache-tomcat-7.0.91-tdesop/logs/catalina.out
CMD /usr/sbin/init

将修改的容器提交镜像并打tar包后,写启动脚本(PS:由于后面多了一个关联的MySQL镜像,故不需要的可以自行删除注释,需要的自己准备MySQL镜像并导出数据)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#! /bin/bash
# author:humingfeng
# description:自定义数据交换平台镜像运行

PRO_NAME_BUILD="3dportal/person"
DB_NAME_BUILD="mysql/person"

echo "****欢迎使用自定义镜像docker服务!****"

echo "****第一步:检查当前目录下的自定义镜像****"

if test -w portal.tar
then
echo '==>>镜像文件存在并可写!'
else
echo '==>>镜像文件不存在或者没有写权限!开始赋予权限中'

chmod 755 portal.tar

if test -w portal.tar
then
echo '==>>镜像文件可写!'
else
echo '==>>镜像文件不存在或者无法赋予写权限!'
exit 126
fi
fi

echo "****第二步:判断docker环境,如果存在相同容器和镜像则删除****"

if docker ps -a | grep -i $PRO_NAME_BUILD ; then

docker rm -f $PRO_NAME_BUILD
docker rmi -f $PRO_NAME_BUILD

echo "==>>删除已存在工程容器和镜像"

else

echo "==>>不存在工程容器"
fi

if docker ps -a | grep -i $DB_NAME_BUILD ; then

docker rm -f $DB_NAME_BUILD
docker rmi -f $DB_NAME_BUILD

echo "==>>删除已存在数据库容器和镜像"

else

echo "==>>不存在数据库容器"
fi

echo "****第三步:导入自定义镜像****"

docker load < portal.tar

echo "****第四步:指定自定义镜像运行容器****"

docker run -p 3306:3306 --name person_mysql -e MYSQL_ROOT_PASSWORD=Gwssi@2017 -d $DB_NAME_BUILD

docker run --name 3dportal --link person_mysql:mysql_person -d -p 8080:8080 -d -p 8081:8081 -d -p 6379:6379 $PRO_NAME_BUILD

echo "****容器启动成功:交换平台登录端口:8080,认证登录端口:8081,MySQL端口:3306,Redis端口:6379****"

本作品采用知识共享署名 4.0 中国大陆许可协议进行许可,欢迎转载,但转载请注明来自御前提笔小书童,并保持转载后文章内容的完整。本人保留所有版权相关权利。

本文链接:https://royalscholar.cn/2018/11/26/Dockerfile多工程构建以及启动脚本(docker容器之间使用link通信)/

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×