Docker:搭建tomcat+mysql+web+nginx运行环境

来源:互联网 发布:参不敏 何足以知之 编辑:程序博客网 时间:2024/05/16 14:34
1. 镜像准备
     采用基础镜像为CentOS,由于公司网络网络限制,连接不上Docker Hub,采用离线下载,下载地址为:centos-6-x86_64.tar.gz,下载到本地以后采用docker import 命令导入。
cat centos-6-x86_64.tar.gz | docker import - centos:latest
2. 搭建tomcat
     tomcat版本选择tomcat 8,将下载好的jdk8和tomcat包解压到/opt/web目录下,该目录将作为数据卷挂载到容器中,用于tomcat基本环境的安装。
启动一个基本容器

docker run -ti --rm -v /opt/web:/opt/web --name tomcat centos:latest /bin/bash
从数据卷复制文件到容器中
mkdir /opt/modulescp -r /opt/web/jdk /opt/modules/        //将jdk8复制到容器里cp -r /opt/web/tomcat /opt/modules/     //将tomcat8复制到容器里
在/etc/profile文件末尾添加JDK环境变量
export JAVA_HOME=/opt/modules/jdkexport PATH=$PATH:$JAVA_HOME/bin
这里可以将JDK环境变量设置放到tomcat开机启动脚本中,我在配置过程中将JDK环境变量放在/etc/profile中,然而在容器中环境变量并不生效,我就在/etc/rc.d/rc.local中添加了source /etc/profile但是也不生效,最后在~/.bashrc中添加了source /etc/profile才生效,我也不知道什么原因(︶︿︶)
JDK设置好以后,编写tomcat开机启动脚本tomcat.sh
#!/bin/bash#export JAVA_HOME=/opt/modules/jdk#export PATH=$PATH:$JAVA_HOME/binsh /opt/modules/tomcat/bin/catalina.sh run
脚本放到/root目录下,添加运行权限chmod u+x /root/tomcat.sh,到这里tomcat基础环境配置完毕,保存为镜像。
docker commit tomcat centos:tomcat
编写Dockerfile文件
FROM centos:tomcatMAINTAINER blackEXPOSE 8080CMD ["/root/tomcat.sh"]
生成镜像
docker build -t tomcat:latest .
启动tomcat容器
docker run -d --name tm1 -p 7001:8080 -v /opt/web:/opt/web tomcat:latestdocker run -d --name tm2 -p 7002:8080 -v /opt/web:/opt/web tomcat:latest
在浏览器中输入http://宿主主机IP:7001或7002查看tomcat容器是否启动成功。
3. 搭建mysql
编写Dockerfile文件
FROM centos:latestMAINTAINER blackRUN yum install -y mysql-server mysqlRUN /etc/init.d/mysqld  start &&\    mysql -e "grant all privileges on *.* to 'root'@'%' identified by 'asd123';" &&\    mysql -e "grant all privileges on *.* to 'root'@'localhost' identified by 'asd123';" &&\    mysql -u root -pasd123 -e "show databases;"RUN sed -i '/\\[mysqld\\]/a skip-name-resolve' /etc/my.cnf  //注意:将双反斜线\\改为单反斜线\EXPOSE 3306CMD ["/usr/bin/mysqld_safe"]
生成镜像
docker build -t mysql .
启动tomcat容器
docker run -d --name mysql -p 3306:3306 mysql
开启一个终端,mysql -h 宿主主机IP -u root -p 连接测试mysql容器是否启动成功。
4. web项目


5. nginx负载均衡


6. 遇到的问题
0 0