Public Repository

Last pushed: a month ago
Short Description
Short description is empty for this repo.
Full Description

BCLinux 容器应用镜像-Tomcat

Tomcat 是什么?

Tomcat 是由 Apache 软件基金会下属的Jakarta项目开发的一个开源的 web 应用服务器和 Servlet 容器,实现了对 Servlet 和 JavaServer Page(JSP)的支持,可提供纯 java HTTP Web 服务器环境,并提供了作为 Web 服务器的一些特有功能,如 Tomcat 管理和控制平台、安全域管理和Tomcat阀等。

安装

  • 从 BCLinux 提供的镜像仓库l拉取 Tomcat 容器镜像(tag 可为6/7/8):

    #  docker pull bclinux2020/tomcat:tag
    
  • 也可以通过 docker build 本地建立 Tomcat 镜像:

    # git clone git@gitlab.cmss.com:linux/bclinux-dockerfiles.git
     cd bclinux-dockerfiles/tomcat/bclinux7/tag
     docker build -t bclinux2020/tomcat:tag .
    

运行

  • Docker

      # docker run --name tomcat bclinux2020/tomcat:tag
    
  • Docker Compose

       version: '2'
    
      services:
        tomcat:
          image: 'bclinux2020/tomcat:tag'
          ports:
            - '8080:8080'
    

主机访问 Tomcat 服务器

如果要从主机访问 web 服务器,用户可以使用 docker 将容器中的 8080 端口映射到主机上的随机端口:

 # docker run -d --name tomcat -P bclinux2020/tomcat:tag

运行 docker port 查看随机分配的端口:

# docker port tomcat
8080/tcp -> 0.0.0.0:32768

用户也可以指定映射的端口:

# docker run -p 8080:8080 bclinux2020/tomcat:tag

这样就可以通过本机的8080 端口访问 tomcat (http://YOUR\-HOST\-IP:8080):

Tomcat 上部署 web 应用

/var/lib/tomcat/webapps 目录是 Tomcat 的 webapps 部署目录,用户可以拷贝非压缩的 web 应用程序,也可以拷贝应用程序的压缩包(.war)。

拷贝本地应用程序到 tomcat 容器中:

# docker cp /path/to/app.war tomcat:/opt/tomcat/webapps

Tomcat 数据持久化

默认情况下如果删除容器,该容器中 Tomcat 配置和部署文件都将丢失,为了避免这种情况发生,本镜像可以通过映射数据卷的方式来保证数据的不丢失。

Tomcat 镜像中 /opt/webapps 数据卷分别对 Tomcat 配置和部署应用。为了持久化数据,用户可以将 Tomcat 容器中相应路径映射至宿主机某个目录:

 # docker run -d --name tomcat \
   -p 8080:8080 \
   -v /path/to/tomcat-web-persistence:/opt/tomcat/webapps \
   bclinux2020/tomcat

或者使用 Docker Compose 方式:

version: '2'

services:
  tomcat:
    image: 'bclinux2020/tomcat:tag'
    ports:
      - '8080:8080'
    volumes:
      - /path/to/tomcat-web-persistence:/opt/tomcat/webapps

使用 Docker Compose

Docker Compose 是一个用来定义和运行复杂应用的 Docker 工具。使用 Compose,你可以在一个文件中定义一个多容器应用,然后使用一条命令来启动你的应用,完成一切准备工作。
例如,可以通过本镜像启动一个 Tomcat 容器,首先创建 Docker Compose 配置文件 docker-compose.yml,内容如下:

version: '2'

services:
  tomcat:
    restart: always
    image: 'bclinux2020/tomcat:tag'
    ports:
      - '8080'
    environment:
      - TOMCAT_USERNAME=username
      - TOMCAT_PASSWORD=password
      - TOMCAT_ALLOW_REMOTE_MANAGEMENT=1

通过容器就可以直接启动容器:

# docker-compose up -d

通过scale参数可以弹性增加/减少容器的数量,例如下面命令将数量增加到3个:

# docker-compose scale tomcat=3
Starting tomcat_tomcat_1 ... done
Creating tomcat_tomcat_2 ... 
Creating tomcat_tomcat_3 ... 
Creating tomcat_tomcat_2 ... done
Creating tomcat_tomcat_3 ... done

查看:

# docker ps
CONTAINER ID        IMAGE                   COMMAND             CREATED             STATUS              PORTS                               NAMES
63514224eda6        bclinux2020/tomcat:latest   "/sbin/tomcat.sh"   9 seconds ago       Up 7 seconds        8009/tcp, 0.0.0.0:32770->8080/tcp   tomcat_tomcat_3
c2f74f4864dd        bclinux2020/tomcat:latest   "/sbin/tomcat.sh"   9 seconds ago       Up 7 seconds        8009/tcp, 0.0.0.0:32769->8080/tcp   tomcat_tomcat_2
62d48fb09d07        bclinux2020/tomcat:latest   "/sbin/tomcat.sh"   22 seconds ago      Up 21 seconds       8009/tcp, 0.0.0.0:32768->8080/tcp   tomcat_tomcat_1

参数配置

Tomcat 镜像提供以下环境变量给用户自定义配置:

  • TOMCAT_AJP_PORT : AJP 端口,默认为 8009。
  • TOMCAT_HTTP_PORT : HTTP 端口,默认为 8080。
  • TOMCAT_SHUTDOWN_PORT :关闭端口服务,默认为 8005。
  • TOMCAT_USERNAME : 管理用户名。
  • TOMCAT_PASSWORD : 管理用户密码。
  • TOMCAT_ALLOW_REMOTE_MANAGEMENT :是否允许远程管理(0:禁止,1:允许),默认为允许。
  • JAVA_OPTS :设置JVM相关变量(设置堆大小、gc日志等)。

例如,默认情况下镜像不会创建管理用户,用户可以在首次运行镜像时设置 TOMCAT_USERNAMETOMCAT_PASSWORD 变量值,为管理员用户指定用户名和密码:

# docker run -d -p 8080:8080 \
  -e TOMCAT_USERNAME=your_username  \
  -e TOMCAT_PASSWORD=your_password  \
  bclinux2020/tomcat:tag

或者使用 Docker Compose 方式:

version: '2'

services:
  tomcat:
    image: 'bclinux2020/tomcat:tag'
    ports:
      - '8080:8080'
    environment:
      - TOMCAT_USERNAME=your_username
      - TOMCAT_PASSWORD=your_password

查看日志

Tomcat 容器镜像将容器的日志发送到 stdout,查看方式如下:

# docker logs tomcat

Java virtual machine used: /usr/lib/jvm/jre/bin/java
classpath used: /usr/share/tomcat/bin/bootstrap.jar:/usr/share/tomcat/bin/tomcat-juli.jar:/usr/share/java/commons-daemon.jar
main class used: org.apache.catalina.startup.Bootstrap
..
INFO: Starting ProtocolHandler ["http-bio-8080"]
May 26, 2017 4:15:09 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-bio-8009"]
May 26, 2017 4:15:09 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 3901 ms

或者使用 Docker Compose 方式:

# docker-compose logs tomcat

Attaching to tomcat
tomcat    | Java virtual machine used: /usr/lib/jvm/jre/bin/java
tomcat    | classpath used: /usr/share/tomcat/bin/bootstrap.jar:/usr/share/tomcat/bin/tomcat-juli.jar:/usr/share/java/commons-daemon.jar
tomcat    | main class used: org.apache.catalina.startup.Bootstrap
...
tomcat    | INFO: Starting ProtocolHandler ["http-bio-8080"]
tomcat    | May 26, 2017 3:55:18 PM org.apache.coyote.AbstractProtocol start
tomcat    | INFO: Starting ProtocolHandler ["ajp-bio-8009"]
tomcat    | May 26, 2017 3:55:18 PM org.apache.catalina.startup.Catalina start
tomcat    | INFO: Server startup in 3533 ms
Docker Pull Command
Owner
bclinux2020

Comments (0)