swift build faild由于"数据库被锁定"在docker contianer?

时间:2017-03-09 22:14:43

标签: swift docker mount

基本上我正在尝试使用docker以及以下设置和步骤在win7中学习swift:

1)在win7上运行的物理机

2)在win7中安装了docker toolbox 1.12.5窗口版本

3)打开" Docker快速入门终端"这是一个MINGW64控制台

4)在MINGW64控制台中,运行" docker pull swift"拉一个码头快速的图像

5)使用" docker run -it --hostname = value --privileged = true --net = host -v // d / dev / tools / docker / swift://创建容器swift:z --name swiftfun 24cc712c0763 / bin / bash ",实际上卷映射不起作用。我无法在win7主机的文件夹中创建文件

swift版本是:

root@value:/swift/PerfectTemplate/.build# swift -version
Swift version 3.0.2 (swift-3.0.2-RELEASE)
Target: x86_64-unknown-linux-gnu

linux容器是:

root@value:/swift/PerfectTemplate/.build# cat /etc/*release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.2 LTS"
NAME="Ubuntu"
VERSION="16.04.2 LTS (Xenial Xerus)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 16.04.2 LTS"
VERSION_ID="16.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
VERSION_CODENAME=xenial
UBUNTU_CODENAME=xenial

6)然后在容器中运行它" mount -t cifs //10.xxxxx/D$/dev/tools/docker/swift / swift -o username = myusername,password = mypassword, noperm " ,这次工作,我可以看到我的win7文件夹中的文件,并可以将文件写入win7。

7)转到文件夹" / swift"在容器中并从git中提取代码,如此链接http://perfect.org/docs/gettingStarted.html所示。我可以看到在win7文件夹中创建的文件/文件夹

8)在容器中,转到文件夹" PerfectTemplate"并运行快速构建,它失败了以下消息:

...

Cloning https://github.com/PerfectlySoft/Perfect-Thread.git
HEAD is now at aee3b32 Cleanup
Resolved version: 2.0.9
<unknown>:0: error: unable to attach DB: unable to initialize database (database
 is locked)
error: exit(1): /usr/bin/swift-build-tool -f /swift/PerfectTemplate/.build/debug
.yaml

...

在我的win7文件夹D:\dev\tools\docker\swift\PerfectTemplate\.build\build.db中创建了一个build.db文件 并且文件大小保持为0字节

以下是来自建筑物的详细信息:

/usr/bin/swiftc --driver-mode=swift -I /usr/lib/swift/pm -L /usr/lib/swift/pm -l
PackageDescription /swift/PerfectTemplate/Packages/PerfectThread-2.0.9/Package.s
wift -fileno 4
/usr/bin/swift-build-tool -f /swift/PerfectTemplate/.build/debug.yaml -v
<unknown>:0: error: unable to attach DB: unable to initialize database (database
 is locked)
error: exit(1): /usr/bin/swift-build-tool -f /swift/PerfectTemplate/.build/debug
.yaml -v

如果我使用linux本地文件夹来构建代码,那么一切正常。build.db的大小会发生变化。它与使用// ip / drive的挂载驱动器有什么关系吗? 我该如何解决?谢谢

1 个答案:

答案 0 :(得分:0)

好吧,似乎sqlite不能容忍容器中映射的windows文件夹。我尝试使用// ip / folder方法和virtualbox共享文件夹方法映射文件夹。它们都不起作用。并且它似乎与winLockFile有关,请查看下面的链接

http://sqlite.1065341.n5.nabble.com/SQLite3-database-on-windows-network-drive-and-unreliable-connection-td75875.html

https://www.sqlite.org/whentouse.html

我还检查了swift包管理器的源代码,似乎没有办法在swift-build-tool中添加选项作为“swift build”命令的一部分