构建容器Nginx+Tomcat+MySQL

博文大纲:

  • 一、构建Nginx容器
  • 二、构建Tomcat容器
  • 三、构建MySQL容器

注意:一定要配置宿主机可以连接Internet,因为在构建容器的过程中,很多资源需要去互联网找。

一、构建Nginx容器

Nginx是一款轻量级的web服务器,也是一个优秀的反向代理服务器。Nginx服务占用内存少,并发能力强,下面是构建Nginx容器的具体操作:

[[email protected] ~]# docker pull centos      #下载centos 7的基础镜像,该镜像也将会被后面构建的Tomcat和MySQL容器所使用。
[[email protected] ~]# mkdir nginx       #创建工作目录
[[email protected] ~]# cd nginx/
[[email protected] nginx]# vim Dockerfile          #编写dockerfile文件,用来实现Nginx安装过程
#写入以下内容
FROM centos            #设置基础镜像
MAINTAINER the centos project     #维护该镜像的用户信息
RUN yum -y install wget proc-devel net-tools gcc zlib zlib-devel make openssl-devel  #安装相关依赖包
RUN wget http://nginx.org/download/nginx-1.9.7.tar.gz     #下载Nginx源码包
RUN tar zxf nginx-1.9.7.tar.gz     #解压下载的源码包
WORKDIR nginx-1.9.7     #指定工作路径
RUN ./configure --prefix=/usr/local/nginx && make && make install     #配置及编译安装
#开启容器的80/443端口
EXPOSE 80
EXPOSE 443
RUN echo "daemon off;">>/usr/local/nginx/conf/nginx.conf      #修改配置文件,以非daemon方式启动
WORKDIR /root/nginx       #指定本地宿主机工作目录
ADD run.sh /run.sh         #上传运行脚本
RUN chmod 775 /run.sh    #赋予脚本权限
CMD ["/run.sh"]      #启动容器时执行脚本,编辑完成后,保存退出即可
[[email protected] nginx]# vim run.sh      #编辑运行脚本,写入以下内容

#!/bin/bash
/usr/local/nginx/sbin/nginx
[[email protected] nginx]# ls           #确定当前目录下有以下文件
Dockerfile  run.sh
[[email protected] nginx]# docker build -t nginx:ljz .       #生成镜像,千万不要忽略命令末尾的点“.”号,否则会报错
                      .............................#省略部分内容
Successfully built cd6ac93f3680              #出现这行提示信息,则表示创建成功
[[email protected] nginx]# docker run -d -P nginx:ljz      #启动该容器,“-d”表示持久化运行,“-P”表示将容器的端口映射到宿主机
895c19da98f3256acb20939dcc7abb4d26273287ddfc0810efc0940a55d04c10
[[email protected] nginx]# docker ps -a    #查看容器,其中32769、32768就是容器映射到宿主机的端口
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                                           NAMES
895c19da98f3        nginx:ljz           "/run.sh"           6 seconds ago       Up 5 seconds        0.0.0.0:32769->80/tcp, 0.0.0.0:32768->443/tcp   nervous_brahmagupta

访问容器进行测试,Nginx是否运行成功!如下(访问宿主机的32769端口,就相当于访问了容器的80端口):

二、构建Tomcat容器

Tomcat是一个免费开源的轻量级web服务器,在中小型企业和并发量不高的场合普遍使用,是开发和调试JSP程序的首选。下面使用Dockerfile文件的方式来创建带有Tomcat服务的docker镜像。

准备工作:点击下载JDK源码包,并放置Linux宿主机的Tomcat工作目录。

[[email protected] ~]# mkdir tomcat                 #创建Tomcat的工作目录
[[email protected] ~]# cd tomcat/              #切换至Tomcat目录
[[email protected] tomcat]# rz            #我这里将本地的JDK源码包上传了上来(我这里使用的是xshell连接的)
[[email protected] tomcat]# ls                    #查看
jdk-8u91-linux-x64.tar.gz
[[email protected] tomcat]# tar zxf jdk-8u91-linux-x64.tar.gz     #解包
[[email protected] tomcat]# vim Dockerfile           #编写dockerfile文件

FROM centos     #基础镜像centos
MAINTAINER The centos project   [email protected]   #维护该镜像的用户信息
ADD jdk1.8.0_91 /usr/local/jdk-8u91             #将本地的JDK文件上传至容器
#以下是设置JDK环境变量
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
RUN yum -y install wget     #安装wget工具
RUN wget http://mirrors.hust.edu.cn/apache/tomcat/tomcat-8/v8.5.38/bin/apache-tomcat-8.5.38.tar.gz
#下载Tomcat源码包
RUN tar zxf apache-tomcat-8.5.38.tar.gz    #解压Tomcat源码包
RUN mv apache-tomcat-8.5.38 /usr/local/tomcat         #移至安装目录
EXPOSE 8080     #开启8080端口
ADD run.sh /run.sh          #添加运行脚本
RUN chmod 775 /run.sh        #赋予脚本执行权限
CMD ["/run.sh"]           #运行脚本,编写完毕后,保存退出即可。
[[email protected] tomcat]# vim run.sh          #编写执行脚本内容

#!/bin/bash
/usr/local/tomcat/bin/startup.sh
tailf /run
[[email protected] tomcat]# ls       #确保当前目录下有以下文件
Dockerfile  jdk1.8.0_91  jdk-8u91-linux-x64.tar.gz  run.sh
[[email protected] tomcat]# docker build -t tomcat:ljz .        #生成镜像,千万不要忽略命令末尾的点“.”号,否则会报错
                      .............................#省略部分内容
Successfully built  94c59c9239ec         #出现这行提示信息,则表示创建成功
[[email protected] tomcat]# docker run -d --name tomcat -p 8080:8080 tomcat:ljz
#运行刚刚创建的Tomcat容器,并指定容器的名字为Tomcat,映射到宿主机的8080端口。
5d8a5714166ef63208511bb1123c5568d0562b1b3734db4eec2aed733d8a733d
[[email protected]ocalhost tomcat]# docker ps -a | grep tomcat        #查看Tomcat容器的状态是否正常
5d8a5714166e        tomcat:ljz          "/run.sh"           20 seconds ago      Up 19 seconds       0.0.0.0:8080->8080/tcp                          tomcat

客户端访问Linux宿主机的8080端口,测试是否能够访问到Tomcat容器提供的web服务,如下:

看到以上页面,则表示Tomcat容器构建成功。

这里简单说一下Tomcat和apache的区别:它们都是Aache开源组织开发的用于处理HTTP服务的项目。两者都免费,也都可以作为独立的web服务器运行。Apache是C语言实现的,主要解析静态文本,并发性高,侧重于HTTP服务,Tomcat是java开发的一个符合JavaEES的JSP服务器,属于Apache的扩展,主要用于解析JSP/Servlet,侧重于Servlet引擎。

三、构建MySQL容器

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

开始构建MySQL容器:

[[email protected] ~]# docker pull docker.io/guyton/centos6      #下载centos 6作为基础镜像
[[email protected] ~]# mkdir mysql        #创建工作目录
[[email protected] ~]# cd mysql/        #切入工作目录
[[email protected] mysql]# vim Dockerfile          #编辑dockerfile文件

FROM guyton/centos6
MAINTAINER the centos project-mysql
RUN yum -y install mysql mysql-server
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‘;"
EXPOSE 3306
CMD ["mysqld_safe"]
[[email protected] mysql]# docker build -t mysql:ljz .     #生成镜像,千万不要忽略命令末尾的点“.”号,否则会报错
                      .............................#省略部分内容
    Successfully built   30414dc7bc02         #出现这行提示信息,则表示创建成功
[[email protected] ~]# docker run -d --name mysql -P mysql:ljz   #运行容器,并定义容器名称为mysql
ea1a8aa2d1f18e0d06c4bdf47a6b743f3763247f13c6335b3fc7b785baf7332f
[[email protected] ~]# docker ps -a | grep mysql        #确认容器处于运行状态
ea1a8aa2d1f1        mysql:ljz           "mysqld_safe"            41 seconds ago      Up 40 seconds                 0.0.0.0:32770->3306/tcp                         mysql
[[email protected] ~]# mysql -h 192.168.1.1 -u root -P 32770 -p123456
#对容器中的数据库进行访问测试,若无法使用mysql命令,请自行执行“yum -y install mysql”进行安装
Welcome to the MariaDB monitor.  Commands end with ; or \g.
                       .............................#省略部分内容        

MySQL [(none)]>           #命令提示符发生变化,登录到了容器中的数据库
MySQL [(none)]> show databases;               #查看数据库的数据
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| test               |
+--------------------+
3 rows in set (0.00 sec)

MySQL [(none)]> exit              #退出
Bye

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

原文地址:https://blog.51cto.com/14154700/2437584

时间: 2024-10-04 12:56:43

构建容器Nginx+Tomcat+MySQL的相关文章

如何玩转最新的项目的搭配springmvc+mybatis+Redis+Nginx+tomcat+mysql

上一次完成nginx+tomcat组合搭配,今天我们就说说,这几个软件在项目中充当的角色: 要想完成这几个软件的组合,我们必须知道和熟悉应用这个框架, 一: Nginx:在项目中大多数作为反向代理服务器.其目的处理http静态页面.和分发请求给tomcat.是目前处理大量请求的解决方案. tomcat:作为处理动态页面的服务器.由Ngxin 均衡分给的请求来处理. redis:在这个里redis 处理两个重要的功能:第一,nginx分发请求给tomcat.如何保持session的同步.就是利用r

docker-compose入门示例:一键部署 Nginx+Tomcat+Mysql

整体环境配置 整体环境的配置,如果一个一个 Dockerfile 去写,那么是相当麻烦的,好在 Docker 有一个名为 Docker-Compose 的工具提供,我们可以使用它一次性完成整体环境的配置: 首先我们看看 docker-compose.yml 配置文件的内容:version: "3"services:  mysql:    container_name: mysql    image: 192.168.1.30:5000/mysql:5.7                

nginx+tomcat+mysql架构搭建

一.环境:Nginx+JRE+tomcat+redis+mysql Nginx           192.168.1.200   web+负载均衡 Tomcat(A)    192.168.1.210   web应用 Tomcat(B)    192.168.1.211   web应用 Mysql(master)192.168.1.230   主从复制,数据库 Mysql(slava)192.168.1.231   主从复制,数据库 测试域名  abc.com 二.部署思路 域名直接解析到Ng

CentOS+Nginx+Tomcat+Mysql+PHP 环境搭建及系统部署

==============安装centos 7.0=======================选择最小安装,将相关的"调试工具"."兼容性程序库"."开发工具"选中.此操作是为了减少后期安装或编译相关服务时出现依赖.或环境的问题.硬盘分区,可根据个人的习惯而定,不清楚的可以直接选择系统自动分区,由于个人的习惯,本人的分区如下,仅供参考:/boot 500M 用于启动Linux的核心文件swap 5120M(5G) Linux下的交换分区,又称

搭建nginx + tomcat + mysql + memcached 环境.

拓普图如下 java程序 需要 运行在tomcat上, tomcat 就是一个java程序. 这个java程序,是需要运行在java的虚拟机上. 所以,我们要在安装tomcat的节点上,安装java虚拟机,即安装jdk环境. 在172.16.26.5 [6 ] 两个集群节点上都装上memcached服务. 以及tomcat服务. 由172.16.26.1使用nginx作为调度节点. 172.16.26.1 nginx 的配置 upstream www.tomcat1.com { server 1

nginx+tomcat集群配置(3)---获取真实客户端IP

前言: 在初步构建的nginx+tomcat服务集群时, 发现webserver获取到的客户端ip都是同一个, 皆为作为反向代理服务的nginx所在的机器IP. 这不太符合我们的基本需求, 为将来的数据挖掘和分析带来了麻烦. 不过不用担心, 本文将简单介绍其背后的原因和原理, 以及具体的解决方案, ^_^. 原因分析: webserver在获取客户端ip时, 默认的方式是通过request.getRemoteAddr(), 这种方式本质是从直连的socket中获取到的. 因此客户端直连web s

构建Nginx+Tomcat+MYSQLDocker容器实战

Docker在运行一个容器之前,需要以镜像作为基础环境,可以说镜像是整个Docker容器创建的关键,而创建镜像的3中方法中基于Dockerfile文件创建最为灵活. Dockerfile可以看作一个被Docker程序锁解释翻译的脚本,是一组命令集合而成的,每条命令都对应一条操作指令,由Docker翻译成Linux下的具体命令.用户可以通过自定义其内容来快速创建镜像. 博文大纲:一.搭建Nginx容器二.搭建Tomcat容器三.搭建MySQL容器 一.构建Nginx容器 Nginx是一款轻量级的W

Docker搭建容器Nginx、Tomcat、MySQL

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

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