2017年12月14日

利用docker-compose建立tomcat和apache整合的服務

本文為記錄公司專案中整合 apache和tomcat在docker上執行的實例,Apache套件是另外安裝,tomcat則是拿搭配JRE 1.7的版本 

Dockerfile - Apache
FROM ubuntu
ENV TZ=Asia/Taipei
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN apt-get update && apt-get install -y --no-install-recommends apache2 libapache2-mod-jk
RUN a2enmod proxy
RUN a2enmod proxy_http
RUN a2enmod proxy_balancer
RUN a2enmod proxy_wstunnel

ADD ./conf/apache2.conf /etc/apache2/apache2.conf
ADD ./conf/000-default.conf /etc/apache2/sites-enabled/000-default.conf
ADD ./conf/worker.properties /etc/libapache2-mod-jk/workers.properties
ADD ./conf/jk.conf /etc/apache2/mods-available/jk.conf
VOLUME ["/var/log/apache2"]
EXPOSE 80 443

CMD ["apachectl", "-k", "start", "-DFOREGROUND"]

conf/jk.conf
JKMount /htdocs/* web_1

conf/apache2.conf
LoadModule jk_module modules/mod_jk.so
JkWorkersFile /etc/libapache2-mod-jk/workers.properties
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
Dockerfile - Tomcat

FROM tomcat:7-jre7
ENV TZ=Asia/Taipei
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
#把編譯好的war檔包進去
COPY ./webapps/wales-test.war /usr/local/tomcat/webapps/
# 一些tomcat的context 設定 
COPY ./wales-test.xml /usr/local/tomcat/conf/Catalina/localhost/ 
COPY ./lib/mysql-connector-java-5.1.28-bin.jar /usr/local/tomcat/lib/ 
COPY ./lib/proxool-0.9.1.jar /usr/local/tomcat/lib/ 
COPY ./lib/proxool-cglib.jar /usr/local/tomcat/lib/ 
COPY ./lib/commons-logging-1.2.jar /usr/local/tomcat/lib/ 
EXPOSE 8009

docker-compose.yml

version: "2" 
  services:
    tomcat:
      volumes:
      - ./tomcat/logs:/usr/local/tomcat/logs 
      expose:
      - 8009
      Image: wales /tomcat
      container_name: "tomcat"
      build: ./tomcat
      environment:
      - JAVA_OPTS=-Djava.security.egd=file:/dev/./urandom
      networks:
        wales_net:
            ipv4_address: 192.168.1.2

    http:
      volumes:
      - ./httpd/logs:/var/log/apache2
      ports:
      - "80:80"
      - "443:443"
      image: wales/httpd
      container_name: "httpd"
      build: ./httpd
      networks:
        wales_net:
            ipv4_address: 192.168.1.3
  
  #另外指定docker要用的網路區段
  networks:
    wales_net:
        driver: bridge
        ipam:
            driver: default 
            config:
                subnet: 192.168.1.0/24
    
啟動服務

docker build -t devmaster/httpd httpd/
docker build -t devmaster/tomcat tomcat/
docker-compose up -d

精選文章

利用Selenium IDE進行UI測試

安裝與執行 Selenium IDE是Firefox的一個plugin,用來做UI的自動測試:下載網址為http://docs.seleniumhq.org/download/ 安裝後,點一下firefox 的工具 -> Selenium IDE ,就會...