dockerdocker-composecontainers

docker-compose up not recreate container


I create two containers, one is an oracle db and one is an apache tomcat.

I run both of them using the following docker compose:

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"

I use the command docker-compose up that in according with the documentation it must be recreate the container.

But in reality it start only the old containers (same containers ID) with the state of the containers when it was stoped, this is a problem because I use it for testing and I want to start from a clean situation (ROOT.war must be deployed every time i run the command).

It is normal or I miss something.

I'm using docker for windows 18.06.1-ce and Compose 1.22.0

UPDATE

So is not true that up recreate container but do it only if something changed?

I also see docker-compose down that remove the container and force up to recreate them, is the right approch? The things that I not uderstand is why the status of the container was saved every time i stoped it (file app.pid create by tomcat still present after a simple up without a previous down)


Solution

  • docker-compose starts and stops containers, if you want to recreate them every time you have to pass the --force-recreate flag as per the docs.