docker-compose up to воссоздать контейнер - PullRequest
0 голосов
/ 06 ноября 2018

Я создаю два контейнера, один - oracle db, а другой - apache tomcat.

Я запускаю их оба, используя следующую команду docker:

version: '3.4'
services:
  tomcat:
     build: ./tomcat/.
     ports:
       - "8888:8080"
       - "59339:59339"
     depends_on:
       - oracle
     volumes:
       - ./tomcat/FILES:/usr/test/FILES
       - ./ROOT.war:/opt/tomcat/webapps/ROOT.war
     expose:
       - "8888"
       - "59339"
   oracle:
     build: ./database/.
     ports:
       - "49161:1521"
     environment:
       - ORACLE_ALLOW_REMOTE=true
     expose:
       - "49161"

Я использую команду docker-compose up , что в соответствии с документацией должно воссоздать контейнер.

Но в действительности он запускает только старые контейнеры (с тем же идентификатором контейнеров) с состоянием контейнеров, когда он был остановлен, это проблема, потому что я использую его для тестирования и хочу начать с чистой ситуации (ROOT. Война должна быть развернута каждый раз, когда я запускаю команду).

Это нормально, или я что-то упускаю.

Я использую Docker для Windows 18.06.1-ce и Compose 1.22.0

UPDATE

Так не правда ли, что up воссоздает контейнер, но делает ли это только если что-то изменилось?

Я также вижу docker-compose down, который удаляет контейнер и заставляет up воссоздать их, правильный подход? Я не понимаю, почему состояние контейнера сохранялось каждый раз, когда я его останавливал (файл app.pid , созданный tomcat, все еще присутствует после простого up без предыдущего вниз )

Ответы [ 3 ]

0 голосов
/ 06 ноября 2018

docker-compose запускает и останавливает контейнеры, если вы хотите воссоздавать их каждый раз, когда вам нужно пройти флаг --force-recreate согласно документам .

0 голосов
/ 06 ноября 2018

--force-recreate воссоздаст хану

Из документов

- force-воссоздать => Воссоздать контейнеры, даже если их конфигурация и изображение не имеют Измененное.

docker-compose up -d --force-recreate
0 голосов
/ 06 ноября 2018

Да, это как и ожидалось.

Звучит так, будто вы хотите сделать перезагрузку :

docker-compose restart

или для принудительного перестроения:

docker-compose --build start
...