构建Nginx+Tomcat+MYSQLDocker容器实战

Docker在运行一个容器之前,需要以镜像作为基础环境,可以说镜像是整个Docker容器创建的关键,而创建镜像的3中方法中基于Dockerfile文件创建最为灵活。

Dockerfile可以看作一个被Docker程序锁解释翻译的脚本,是一组命令集合而成的,每条命令都对应一条操作指令,由Docker翻译成Linux下的具体命令。用户可以通过自定义其内容来快速创建镜像。

博文大纲:
一、搭建Nginx容器
二、搭建Tomcat容器
三、搭建MySQL容器

一、构建Nginx容器

Nginx是一款轻量级的WEB服务器,也是一款优秀的反向代理服务器。Nginx服务占用内存少,并发能力强,深受国内外用户的欢迎。

1.下载基础镜像

[[email protected] ~]# docker pull docker.io/lvzhenjiang/centos7
//下载一个创建Nginx镜像的基础centos镜像

2.建立工作目录

[[email protected] ~]# mkdir nginx
[[email protected] ~]# cd nginx/

3.创建并编写Dockerfile文件

[[email protected] nginx]# vim Dockerfile
FROM lvzhenjiang/centos7              //设置基础镜像
MAINTAINER lzj                              //维护者信息
RUN yum -y install wget prce-devel net-tools gcc zlib zlib-devel make openssl-devel
//安装所需依赖包
RUN wget http://nginx.org/download/nginx-1.14.2.tar.gz
//获取nginx源码包
RUN tar zxf nginx-1.14.2.tar.gz
WORKDIR nginx-1.14.2
//解压之后进入解压后的目录
RUN ./configure --prefix=/usr/local/nginx && make && make install
//编译安装
EXPOSE 80                     //开启80端口
EXPOSE 443                   //开启443端口
RUN echo "daemon off;" >> /usr/local/nginx/conf/nginx.conf
//修改nginx服务配置文件,以非daemon(守护进程)方式启动
ADD run.sh /run.sh            //上传本地编写的脚本到容器中
RUN chmod 775 /run.sh     //赋予脚本执行权限
CMD ["/run.sh"]                 //启动容器时,执行run.sh脚本

4.编写执行脚本内容

[[email protected] nginx]# vim run.sh
#!/bin/bash                                          //声明使用的shell
/usr/local/nginx/sbin/nginx                  //使用nginx自带的脚本启动nginx

5.生成镜像

[[email protected] nginx]# ls
//确保Dockerfile文件和启动脚本在同一目录下
Dockerfile  run.sh
[[email protected] nginx]# docker build -t nginx:v1 .
//使用当前目录下的Dockerfile文件生成新的镜像,名为nginx:v1

6.启动容器进行测试

[[email protected] nginx]# docker run -dit -p 12345:80 --name nginx nginx:v1
//使用新生成的镜像创建一个名为nginx的容器,并将容器中的80端口映射到宿主机的12345端口
[[email protected] nginx]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                            NAMES
1c73bb591e84        nginx:v1            "/run.sh"           31 minutes ago      Up 31 minutes       443/tcp, 0.0.0.0:12345->80/tcp   nginx
//确认容器已经正常运行并已经映射端口

测试结果:

nginx容器搭建完成!

二、构建Tomcat容器

Tomcat是一个免费开源的轻量级Web服务器,在中小型企业和并发量不高的场合普遍使用,是开发和调试JSP程序的首选。

1.下载基础镜像

[[email protected] ~]# docker pull docker.io/lvzhenjiang/centos7
//下载一个创建Nginx镜像的基础centos镜像

2.创建工作目录

因为tomcat需要java的环境,所以要下载JDK软件包

[[email protected] ~]# mkdir tomcat
[[email protected] ~]# cd tomcat/

3.编写Dockerfile文件

[[email protected] tomcat]# vim Dockerfile
FROM lvzhenjiang/centos7              //基础镜像
MAINTAINER lzj                               //维护者信息
ADD jdk1.8.0_91 /usr/local/jdk-8u91
ENV JAVA_HOME /usr/local/jdk-8u91
ENV JAVA_BIN /usr/local/jdk-8u91/bin
ENV JRE_HOME /usr/local/jdk-8u91/jre
ENV PATH $PATH:/usr/local/jdk-8u91/bin:/usr/local/jdk-8u91/jre/bin
ENV CLASSPATH /usr/local/jdk-8u91/jre/bin:/usr/local/jdk-8u91/lib:/usr/local/jdk-8u91/jre/lib/charsets.jar
//设置JDK环境变量
RUN yum -y install wget
RUN wget http://us.mirrors.quenda.co/apache/tomcat/tomcat-9/v9.0.27/bin/apache-tomcat-9.0.27.tar.gz
//获取tomcat软件包
RUN tar zxf apache-tomcat-9.0.27.tar.gz
RUN mv apache-tomcat-9.0.27 /usr/local/tomcat
//解压之后,并将解压后的目录移动到指定的位置
EXPOSE 8080
//开启8080端口
ADD run.sh /run.sh
RUN chmod 775 /run.sh
CMD ["/run.sh"]                       //启动容器时,执行脚本

4.编写启动脚本

[[email protected] tomcat]# vim run.sh
#!/bin/bash
/usr/local/tomcat/bin/startup.sh            //使用tomcat服务自带的脚本启动服务
tailf /run                  //让启动脚本始终运行

5.使用Dockerfile文件生成镜像

[[email protected] tomcat]# ls
Dockerfile  jdk1.8.0_91  run.sh
//确保Dockerfile文件中所需的东西全在这个目录下
[[email protected] tomcat]# docker build -t tomcat:v1 .
//使用当前目录的Dockerfile文件生成名为tomcat:v1的镜像

6.运行容器并验证

[[email protected] tomcat]# docker run -dit -p 12344:8080 --name tomcat tomcat:v1
//使用新生成的进行创建一个名为tomcat的容器,并将容器中的8080端口映射到宿主机的12344端口
[[email protected] tomcat]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                            NAMES
1ffc46084d84        tomcat:v1           "/run.sh"           10 minutes ago      Up 10 minutes       0.0.0.0:12344->8080/tcp          tomcat
//确保容器已经启动,并已经映射端口

访问测试:

tomcat容器搭建完成!

三、构建MySQL容器

MySQL是当下最流行的关系型数据库,所使用的SQL语言是用于访问数据库的最常用标准化语言,MySQL具有体积小、速度快、成本低的优势,成为中小型企业首选的数据库。

1.下载基础镜像

[[email protected] ~]# docker pull docker.io/lvzhenjiang/centos6
//下载centos6的基础镜像作为构建MySQL的基础镜像

2.创建工作目录

[[email protected] ~]# mkdir mysql
[[email protected] ~]# cd mysql/

3.创建Dockerfile文件

[[email protected] mysql]# vim Dockerfile
FROM lvzhenjiang/centos6           //基础镜像
MAINTAINER lzj                      //维护者信息
RUN yum -y install mysql mysql-server                  //安装mysql
RUN /etc/init.d/mysqld start && mysql -e "grant all privileges on *.* to ‘root‘@‘%‘ identified by ‘123456‘;"&&mysql -e "grant all privileges on *.* to ‘root‘@‘localhost‘ identified by ‘123456‘;"
//启动MySQL服务,并授权用户
EXPOSE 3306                        //开启3306端口
CMD ["mysqld_safe"]              //使用MySQL自带的启动脚本启动服务

4.生成镜像

[[email protected] mysql]# ls
Dockerfile
[[email protected] mysql]# docker build -t mysql:v1 .
//使用当前目录下的Dockerfile文件生成名为mysql:v1的镜像

5.创建容器并测试

[[email protected] mysql]# docker run -dit -p 12343:3306 --name=mysql mysql:v1
//使用mysql:v1的镜像生成一个名为mysql的容器,并映射容器中的3306端口都宿主机的12343端口
[[email protected] mysql]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                            NAMES
c356d5b35167        mysql:v1            "mysqld_safe"       4 seconds ago       Up 3 seconds        0.0.0.0:12343->3306/tcp
//确认容器已经正常运行,并已经启动端口映射

宿主机进行测试:

[[email protected] ~]# yum -y install mysql                    //首先安装mysql命令
[[email protected] ~]# mysql -u root -h 127.0.0.1 -P 12343 -p123456
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.1.73 Source distribution

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement.

MySQL [(none)]>
//访问成功

MySQL容器搭建完成!

———————— 本文至此结束,感谢阅读 ————————

原文地址:https://blog.51cto.com/14157628/2450991

时间: 2024-08-30 16:33:50

构建Nginx+Tomcat+MYSQLDocker容器实战的相关文章

Linux深入篇之四:构建Nginx+Tomcat动静分离架构

Linux深入篇之四:构建Nginx+Tomcat动静分离架构 Nginx动静分离简单来说就是把动态跟静态请求分开,不能理解成只是单纯的把动态页面和静态页面物理分离.严格意义上说应该是:动态请求跟静态请求分开,可以理解成使用Nginx处理静态页面,Tomcat.Resin处理动态页面. 动静分离从目前实现角度来讲大致分为两种: 一种是纯粹的把静态文件独立成单独的域名,放在独立的服务器上,也是目前主流推崇的方案: 另外一种方法就是动态跟静态文件混合在一起发布,通过nginx来分开. 具体怎么来实现

Docker构建Nginx+Tomcat动静分离架构

随着主流Nginx WEB服务器的发展,现在基于Nginx的WEB服务器已广泛应用于各大互联网企业.今天我们来使用docker构建我们的Linux+Nginx+Tomcat动静分离服务器. 1)    启动docker镜像 查看当前系统存在的镜像,我这里为centos6.6,大家可以参考我第一篇文章进行下载相应的镜像文件,然后启动. 启动方式如下:   docker run -i -t  centos6.6:v2 /bin/bash 然后进入新的docker容器里,查看ip为172.17.0.6

构建nginx+Tomcat负载均衡集群

一.基本环境 主机 系统版本 IP 软件包 Nginx服务器 CentOS 6.5 64位 192.168.10.128 nginx-1.6.0.tar.gz Tomcat服务器1 CentOS 6.5 64位 192.168.10.129 jdk-7u65-linux-x64.gz apache-tomcat-7.0.54.tar.gz Tomcat服务器2 CentOS 6.5 64位 192.168.10.130 jdk-7u65-linux-x64.gz apache-tomcat-7.

构建容器Nginx+Tomcat+MySQL

博文大纲: 一.构建Nginx容器 二.构建Tomcat容器 三.构建MySQL容器 注意:一定要配置宿主机可以连接Internet,因为在构建容器的过程中,很多资源需要去互联网找. 一.构建Nginx容器 Nginx是一款轻量级的web服务器,也是一个优秀的反向代理服务器.Nginx服务占用内存少,并发能力强,下面是构建Nginx容器的具体操作: [[email protected] ~]# docker pull centos #下载centos 7的基础镜像,该镜像也将会被后面构建的Tom

使用Dockerfile构建Nginx,Tomcat,MySQL镜像

实验环境说明 本机IP地址:192.168.10.157 构建mysql镜像时,验证的主机IP:192.168.10.149 构建Nginx镜像 1.下载基础镜像--centos镜像 docker pull centos 2.创建工作目录 mkdir /opt/nginx cd /opt/nginx/ 3.创建并编写Dockerfile文件 vim Dockerfile FROM centos MAINTAINER this is nginx image <xxy> RUN yum insta

构建Apache Tomcat 6.0 Servlet/JSP 容器

构建Apache Tomcat 6.0 Servlet/JSP 容器 这个子项目包含了Tomcat 6.0的源代码,一个实现了Java Community Process http://www.jcp.org/ 的Servlet2.5和JSP2.1标准的容器. 注意:如果你只需要运行Tomcat,没有必要去构建它,你可以非常方便的下载一个二进制发布包.它是跨平台的.阅读RUNNING.txt文件,它介绍了怎样去运行它. 请按以下步骤来从源代码构建一个Tomcat的二进制发布版本: 下载并安装JD

Nginx+Tomcat负载均衡群集(实战可跟做!)

Nginx+Tomcat负载均衡群集 nginx处理静态 tomcat处理动态 合并为动静分离(前后端分离) Tomcat重要目录 bin:存放启动和关闭Tomcat脚本conf:存放Tomcat不同的配置文件doc:存放Tomcat文档lib/japser/common:存放Tomcat运行需要的库文件logs:存放Tomcat执行时的LOG文件src:存放Tomcat的源代码webapps:Tomcat的主要Web发布目录 Demo前置知识点: Nginx静态处理优势 1.Nginx处理静态

Apache/Nginx+Tomcat+Memcahced实现session管理

一.memcached简介 Memcached是一个免费开源.高性能.分布式的内存对象缓存系统.Memcached是在内存中,为特定数据(字符串或对象)构建key-value的小块数据存储. Memcached项目地址: http://www.memcached.org/ 现在最新版本为1.4.22,时间点:2015.01.26 二.实验环境介绍 第一个实验:我们在node3节点实现一个LNMP架构,测试memcached的基本的使用和web gui界面管理: 第二个实验:我们将node3节点当

基于Storm构建实时热力分布项目实战

详情请交流  QQ  709639943 01.基于Storm构建实时热力分布项目实战 02.以慕课网日志分析为例 进入大数据 Spark SQL 的世界 03.Spring Cloud微服务实战视频课程 04.漫谈spring cloud 与 spring boot 基础架构 05.Java秒杀系统方案优化 高性能高并发实战 06.Java深入微服务原理改造房产销售平台 07.快速上手Linux 玩转典型应用 08.漫谈spring cloud分布式服务架构 09.Java Spring Se