在Docker容器(Ubuntu)中的窗口中创建运行Go应用程序
问题描述:
我创建了用于输出一些文本的非常简单的应用程序。在Docker容器(Ubuntu)中的窗口中创建运行Go应用程序
我的开发环境是Windows + Docker for Windows。我创建了Ubuntu的容器和建立后我的应用程序在Windows的Ubuntu
set GOARCH=amd64
set GOOS=linux
go build -o "myapp"
然后我复制“MYAPP”文件,共享文件夹,看看它是我的容器的共享文件夹中。 后,我尝试运行它内部的容器,但有一个错误
为什么我不能运行呢?它是不正确的构建还是我尝试以一些错误的方式执行它?
在windows中我运行我的exe文件时有这个输出,我想在Ubuntu中有相同的东西。
UPDATE 作为建议我尝试./myapp并有Exec的格式错误
答
在Ubuntu和其他Linux系统,只是myapp
将尝试从PATH
找到myapp
环境变量。专门为当前目录中的可执行文件看,你需要使用:
./myapp
或者使用完整路径:
/__shared/myapp
更新:对于这个工作,你的文件必须是可执行的。您可以使用ls -l
验证:
ls -l
-rwxrwxr-x 1 user user 0 Feb 9 09:45 myapp
如果你没有看到至少有一个“X”在第一列,你需要运行:
chmod +x myapp
见understanding-linux-file-permissions有关的更多信息学科。
UPDATE:错误cannot execute binary file: Exec format error'
可能来自:
- 系统架构和文件之间的不匹配 - >确保你的Ubuntu的机器是64位版本和比较
uname -a
和file myapp
输出根据
this thread
- ,运行虚拟机(与Windows主机)的共享文件夹中的文件可能会导致麻烦 - >尝试到共享文件夹
你尝试复制外面的myapp? '。/ myapp' – ymonad
你写了你将结果*复制到*的地方,而不是从你从哪里得到它。 build命令使用另一个目标目录,而不是install命令。 – Wolf
运行构建后,我从src/myProject文件夹中取得了结果。新文件出现在那里,我将它复制到容器 – Vitalii