【发布时间】:2018-05-02 10:53:59
【问题描述】:
我有一个看起来像这样的 docker compose 文件
version: '3'
services:
webapp:
build: '.'
ports:
- "8000:8000"
networks:
- db
postgres:
image: "postgres:alpine"
environment:
POSTGRES_PASSWORD: "password"
volumes:
- "./scripts:/docker-entrypoint-initdb.d"
networks:
- db
networks:
db:
scripts 文件夹如下所示:
|- scripts
|-- init.sh
|-- init.sql
问题
我的这个项目的工作流程是渐进式的,所以我在我的主机操作系统上添加了一些 SQL 初始化数据,运行sudo docker-compose down -v,然后运行sudo docker-compose up。我没有更新我的用户在这种情况下不需要使用 sudo。
当我更新init.sh 文件时,这些更新会在我每次运行docker-compose up 时反映出来。但是,init.sql 文件只记住该文件的第一个“版本”。运行docker-compose up 时将忽略任何后续更新。
我尝试过的事情
- 试过
sudo docker-compose up --renew-anon-volumes --force-recreate似乎也没有帮助。 - 尝试使用
sudo docker volume prune修剪所有卷。没有帮助 - 尝试使用
sudo docker system prune修剪 docker 系统 - 如果我将文件及其内容复制到一个新的文件名,那么会起作用。 重命名文件不起作用
所以问题很简单,如何让我的 docker compose 设置识别 init.sql 的内容更新?我不明白为什么会选择对init.sh 的更改而忽略对init.sql 的更改?
更新
一个重要的信息是该项目位于一个 virtualbox 共享文件夹中,所以底层文件系统是vboxsf,而这一切都在发生。
【问题讨论】:
标签: linux docker docker-compose devops