2016-09-24 2 views
0

Я действительно новичок в Docker и наслаждаюсь им, однако, я нашел некоторые проблемы с запуском моего приложения. Я хочу, чтобы запустить мое приложение, которое состоит из 2-х услуг:Docker: Запустите Tomcat после запуска исполняемых Oracle и скриптов

  1. Я хотел бы начать Oracle и запускать некоторые DDL и DATA скрипты, которые должны занять более 30 секунд

  2. Я хотел бы начать Tomcat и запустите мой военный файл после завершения первого шага, так как он не начнется без него.

Я уже прочитал о: docker-wait и это не то, что я я точно жду, как я должен выполнить некоторые сценарии после моей БД будет доступен на указанный порт.

Как я понимаю, правильный способ запуска мультисервисных приложений - использовать docker compose.

Вот мой docker-compose.yml сейчас:

version: '2' 
services: 
web: 
build: Server 
ports: 
- "8080:8080" 
depends_on: 
- oracle 
oracle: 
build: Oracle 
ports: 
- "1521:1521" 

depends_on просто позволяет мне заказать запуск приложений и больше ничего.

Для Tomcat и Oracle я использую самые популярные изображения от Docker Hub.

Как я могу получить правильный способ запустить Tomcat после запуска Oracle и выполнения скриптов?

ответ

1

depends_on только проверяет, работает ли контейнер, а не то, что служба внутри него готова принять запросы. Вы хотите, чтобы ваш сервис web запускался только тогда, когда ваш сервис oracle готов. Для этого вы можете использовать скрипт, например wait-for-it. Например:

version: '2' 
services: 
    web: 
    build: Server 
    ports: 
     - "8080:8080" 
    depends_on: 
     - oracle 
    command: wait-for-it.sh oracle:1521 --timeout=8 -s -q -- myservercmd 
    oracle: 
    build: Oracle 
    ports: 
    - "1521:1521" 
+0

Я попробую, спасибо – quento

+0

где я должен поставить wait-for-it.sh? – quento

+0

В вашем файле Dockerfile используйте 'COPY wait-for-it.sh/usr/local/bin /'. – Alkaline

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