docker-compose up不重新创建容器

时间:2018-11-06 11:50:15

标签: docker docker-compose containers

我创建了两个容器,一个是oracle db,一个是apache tomcat。

我使用以下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"

我使用命令 docker-compose up ,必须根据文档重新创建容器。

但是实际上,它仅以停止时的容器状态启动旧容器(相同的容器ID),这是一个问题,因为我将其用于测试并且希望从干净的状态开始(ROOT)。每次我运行命令时都必须部署战争)。

这很正常,或者我错过了一些事情。

我正在将docker用于Windows 18.06.1-ce和Compose 1.22.0

更新

所以 up 重新创建容器是不正确的,但只有在发生某些更改时才这样做吗?

我还看到docker-compose down删除了容器并强制up重新创建它们,这是正确的做法吗? 我不理解的是为什么每次我停止容器时都会保存容器的状态(由tomcat创建的文件 app.pid 在简单的 up 之后仍然存在)上一个

3 个答案:

答案 0 :(得分:1)

docker-compose启动和停止容器,如果您希望每次必须按照docs传递--force-recreate标志来重新创建它们,则为它们。

答案 1 :(得分:0)

是的,这是预期的。

想要听起来像restart的声音:

docker-compose restart

或强制进行重建:

docker-compose --build start

答案 2 :(得分:0)

--force-recreate将重新创建容器

From Docs

  

-force-recreate =>重新创建容器,即使它们的配置和映像没有   改变了。

docker-compose up -d --force-recreate