2016-08-30 3 views
1

Я искал лучшие практики для tomcat на докере и как связать WAR-файл.Использование докерного кота с внешним WAR

Эти два подхода, которые попадались являются:

  1. Расширение базы TOMCAT изображение и копирование файла WAR в /webapps, а затем восстанавливать изображение как свои собственные.
  2. Используйте два контейнера, первый голый tomcat, а второй контейнер данных, такой как busybox, который содержит WAR-файл. Затем вы установили контейнер busybox в контейнер tomcat по адресу /webapps, и файл WAR был бы эффективно поднят.

Мне нравится звук второго подхода, однако мне не удалось успешно заставить его работать.

Я попытался создать контейнер данных с помощью busybox, а затем использовать компоновку докеров для запуска служб. WAR не копируется, и контейнер busybox немедленно останавливается.

Data Container Dockerfile:

FROM busybox 

RUN mkdir /webapps 
COPY ./demo.war /webapps/demo.war 

VOLUME ['/webapps'] 

докер-compose.yml

version: '2' 
services: 
    data: 
    image: <Data Container Image> 

    tomcat: 
    image: tomcat:8.5.4-jre8 
    volumes_from: 
     - data 
    ports: 
     - "678:8080" 

Файл WAR не копируется и выходит BusyBox контейнер сразу после docker-compose up запускается.

Любая помощь будет оценена по достоинству.

ответ

0

Контейнер данных выходит по определению, что его ДНК.

Вы должны выставить ее объем или использовать

version: '2' 
services: 
    data: 
    image: <Data Container Image> 
    volumes: 
     - webapps:/webapps 
    tomcat: 
    image: tomcat:8.5.4-jre8 
    volumes: 
     - webapps:/webapps 
    ports: 
     - "678:8080" 
volumes: 
    webapps: 
    driver: local 

Также обратите внимание, я не использовал volumes_from, но объемы, поскольку volumes_from довольно устаревшим с использованием «томов» Я думаю, что вводится с докер 1.11

Подсказка: отрегулируйте путь монтирования в контейнере tomcat, возможно,/usr/local/tomcat/webapps

Смежные вопросы