2017-02-09 4 views
0

Я создал очень простое приложение, которое выставляет для вывода некоторого текста.Запустить приложение Go, созданное в окнах в контейнере Docker (Ubuntu)

Моя среда разработки - Windows + Docker для Windows. Я создал Ubuntu контейнер и после того, как построить мое приложение в Windows, для убунту

set GOARCH=amd64 
set GOOS=linux 
go build -o "myapp" 

Затем скопировать файл «MYAPP» в общую папку и увидеть его в общей папке моего контейнера. После того как я пытаюсь запустить его внутри контейнера, но есть ошибка

enter image description here

Почему я не могу запустить его? Был ли он построен неправильно или я пытаюсь выполнить его неправильно?

В windows у меня есть этот вывод, когда я запускаю свой exe-файл, и я хочу что-то подобное в Ubuntu.

enter image description here

UPDATE Как предложил мне попробовать ./myapp и есть ошибка Exec формат

enter image description here

+2

вы пробовали? './myapp' – ymonad

+0

Вы писали, где вы копируете результат * в *, но не *, откуда вы его берете. Команда build использует другой целевой каталог, чем команда установки. – Wolf

+0

Я взял результат из папки src/myProject после запуска сборки. Там появился новый файл, и я скопировал его в контейнер – Vitalii

ответ

1

В Ubuntu и других систем Linux, просто myapp будет пытаться найти myapp от PATH переменная среды. Для того, чтобы выглядеть специально для исполняемого файла внутри текущего каталога, вы должны использовать:

./myapp 

Или использовать полный путь:

/__shared/myapp 

UPDATE: для этой работы, файл нужно быть исполняемым. Вы можете проверить его с помощью ls -l:

ls -l 
-rwxrwxr-x 1 user user 0 Feb 9 09:45 myapp 

Если вы не видите, по крайней мере один «х» в первой колонке, вам нужно запустить:

chmod +x myapp 

См understanding-linux-file-permissions для получения дополнительной информации о предмет.

UPDATE: ошибка cannot execute binary file: Exec format error' может исходить от:

  • несоответствия между архитектурой системы и файлом -> обеспечить вашу машину Ubuntu является 64-разрядной версией и сравнить вывод uname -a и file myapp
  • согласно this thread, работает файл в общей папке VM (с окнами хоста) может вызвать проблемы -> попытаться скопировать MyApp вне общей папки
+1

. Лучше, после того как я позвоню, как вы сказали, у меня есть »./ myapp: невозможно выполнить двоичный файл: ошибка формата Exec ':) Итак, есть еще одна проблема: – Vitalii

+0

обновил ответ, скажите, разрешит ли это вашу проблему. – Derlin

+0

Кажется, что он выполним. >> корень @ 7dd1655ae5db:/__ разделяемые # Ls -l >> Всего 1764 >> -rwxr-хт-х 1 корень корень 1804288 9 февраля 2017 MyApp – Vitalii

Смежные вопросы