利⽤Dockerfile构建⼀个基于CentOS7镜像
利⽤Dockerfile构建⼀个基于 7,包括java 8, tomcat 7,php ,mysql+mycat的镜像。
Dockerfile内容如下:
docker打包镜像说明如下:
1. 以下⽤于构建yum源,由于公司⽹络有所限制,安装依赖包的过程让⼈泪奔…故果断利⽤宿主机的中的系统光盘搭建http yum源。
2. 因为centos 7 的系统光盘中没有⾃带mysql-server,故需要⾃⼰下载,正好,mysql社区也提供了基于mysql-serve的yum源,只需
在/pos.d/⽬录下添加以下⽂件po⽂件,内容如下:
即便是这种⽅式,下载过程同样让⼈极度崩溃,⽆奈,只好⾃⼰下载了相关的rpm包,放到本地mysql⽬录下,通过ADD命令将该⽬录下的⽂件COPY到镜像中。注意:/mysql是相对于Dockerfile的相对路径,因为我的Dockerfile的绝对路径为/root/Dockerfile,所以,下⾯中/mysql 中绝对路径实际上也是/root/mysql/。
ADD /mysql /mysql
/root/mysql中的⽂件如下:
[root@localhost ~]# ls /root/mysql/
mysql-5.6.26-2.el5.x86_64.rpm mysql-community-libs-5.6.26-2.el5.x86_64.rpm
mysql-community-client-5.6.26-2.el5.x86_64.rpm mysql-community-libs-compat-5.6.26-2.el5.x86_64.rpm
mysql-community-common-5.6.26-2.el5.x86_64.rpm mysql-community-server-5.6.26-2.el5.x86_64.rpm
3. 最后⼀步实际上⽤脚本进⾏启动
脚本内容如下:
[root@localhost ~]# cat /root/startup.sh
#!/bin/bash
sed -i 's/user name="test"/user name=\"'"$MYCAT_USER"'"/' /usr/local/mycat/l
sed -i 's/name="password">test/name="password">'"$MYCAT_PASS"'/' /usr/local/mycat/l
mysqld_safe & /usr/local/mycat/bin/mycat start & httpd & /usr/local/tomcat/bin/catalina.sh run
在该启动脚本中,利⽤参数的⽅式设定mycat的⽤户名和密码,⽤户名和密码有Dockerfile中的以下变量指定:
ENV MYCAT_USER mycat
ENV MYCAT_PASS mycat
注意:在创建基于该镜像的容器时,也可通过-e参数显性指定以上两个参数的值,如果没有指定,则⽤户名和密码的默认值均为Dockerfile 中指定的mycat。
验证如下:
1. 基于Docker⽣成镜像
# docker build -t victor/mycat:v1 .
建议:在利⽤Dockerfile构建镜像时,可带上--rm=false参数,即 docker build -rm=false -t victor/mycat:v1 .意思是不删除build镜像过程中产⽣的中间容器,这样的话,即便这次构建失败了,再次构建的时候会直接利⽤cache容器,会⽅便快捷很多。
2. 查看⽣成的镜像
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
victor/mycat v1 5091cdf7b73a 2 hours ago 1.058 GB
3. 运⾏容器
# docker run -p 8080:8080 -p 9066:9066 -p 8066:8066 -p 81:80 victor/mycat:v1
⾸先验证tomcat是否启动
再次验证apache是否正常启动,为了避免和本地的http yum源冲突,我这边⽤的是宿主机的81端⼝映
射容器的80端⼝
验证mycat是否能正常使⽤
不难看出,基于mycat的默认⽤户名和密码登陆被拒,必须⽤指定的⽤户名和密码。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论