已装入的docker卷损坏文件

时间:2016-04-06 13:31:18

标签: docker docker-compose

我认为这与机器有关,但我不确定。我在OSX上使用最新的docker工具箱和docker 1.10.3 我有一个使用Dockerfile的项目,它将代码复制到容器中,如下所示:

[...]
COPY . /code
VOLUME /code
WORKDIR /code
[...]

为了加快本地开发(测试执行),我们将当前目录挂载到撰写文件

[...]
volumes:
      - .:/code
[...]

并执行

docker-compose -f docker-compose.yml -f docker-compose.testing.yml run web py.test

现在,我看起来有两个不同的文件夹/文件: 当运行容器并使用vi查看文件时,一切看起来像在主机上。更改文件和执行我们的测试(特别是pytest)让python解释器读取垃圾,因此无法执行测试。

实施例

文件的结尾看起来像这样(在Dockerfile中复制到容器中):

post_save.connect(backup_something, sender=SomeSender, dispatch_uid='backup_something') foobar
this obviously raises an error when executing, so I change it to

post_save.connect(backup_something, sender=SomeSender, dispatch_uid='backup_something')

该文件现在看起来很好,无论是来自主机还是容器内部。 执行pytest时,它仍会读取复制代码的内容,为我在本地打破测试。

如果我改变了更多,它既不是复制文件也不是挂载文件,所以东西在随机位置断开:

File "/code/some_code.py", line 69
    dispatch_uid='backup_
                        ^

SyntaxError:扫描字符串文字时的EOL (尾部显示正确的语法等,代码中肯定没有任何损坏)

我们的设置是否有问题,或者只是我的机器被破坏了?我尝试重新启动并重新创建docker机器,但这没有帮助。

2 个答案:

答案 0 :(得分:1)

我会尝试以只读模式挂载,然后仔细检查文件系统类型是否有异常。 多年前有一个ntfs-3g破坏文件的错误,也许是类似的东西(显然不是ntfs,因为我们在OS X上)

答案 1 :(得分:-2)

我没有在IOS上使用DT的经验,但我认为你可能已经完成了union mount

如果是这种情况,解决方案是移动文件或挂载点,以免文件被遮蔽。

This文章可能相关: