我认为这与机器有关,但我不确定。我在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机器,但这没有帮助。
答案 0 :(得分:1)
我会尝试以只读模式挂载,然后仔细检查文件系统类型是否有异常。 多年前有一个ntfs-3g破坏文件的错误,也许是类似的东西(显然不是ntfs,因为我们在OS X上)
答案 1 :(得分:-2)