我创建了两个容器,一个是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 之后仍然存在)上一个下)
答案 0 :(得分:1)
docker-compose
启动和停止容器,如果您希望每次必须按照docs传递--force-recreate
标志来重新创建它们,则为它们。
答案 1 :(得分:0)
答案 2 :(得分:0)
--force-recreate
将重新创建容器
-force-recreate =>重新创建容器,即使它们的配置和映像没有 改变了。
docker-compose up -d --force-recreate