Go-kompilierte Binärdatei wird nicht in einem Alpine Docker-Container auf dem Ubuntu-Host ausgeführt.

Gegeben eine Binärdatei, kompiliert mit Go mitGOOS=linux undGOARCH=amd64, bereitgestellt auf einemdocker Container basierend aufalpine:3.3, die Binärdatei wird nicht ausgeführt, wenn der Host der Docker-Engine Ubuntu (15.10) ist:

sh: /bin/artisan: not found

Diese Binärdatei (kompiliert für dasselbe Betriebssystem und denselben Arch) wirdrun ganz gut wenn der Docker-Engine-Host @ ibusybox (das ist die Basis füralpine) bereitgestellt in einer VirtualBox-VM unter Mac OS X.

Diese Binärdatei läuft auch einwandfrei, wenn der Container auf einem von Ubuntu-Images basiert.

Hast du eine Idee, was für eine Binärdatei fehlt?

Das habe ich getan, um zu reproduzieren (erfolgreicher Lauf in VirtualBox / busybox unter OS X wird nicht angezeigt):

Build (wird explizit mit Flags erstellt, obwohl der Bogen übereinstimmt):

➜  artisan git:(master) ✗ GOOS=linux GOARCH=amd64 go build

Prüfen Sie, ob es auf dem Host ausgeführt werden kann:

➜  artisan git:(master) ✗ ./artisan 
10:14:04.925 [ERROR] artisan: need a command, one of server, provision or build 

In Docker-Verzeichnis kopieren, erstellen, ausführen:

➜  artisan git:(master) ✗ cp artisan docker/build/bin/        
➜  artisan git:(master) ✗ cd docker 
➜  docker git:(master) ✗ cat Dockerfile 
FROM docker:1.10
COPY build/ /
➜  docker git:(master) ✗ docker build -t artisan .
Sending build context to Docker daemon 10.15 MB
Step 1 : FROM docker:1.10
...
➜  docker git:(master) ✗ docker run -it artisan sh
/ # /bin/artisan 
sh: /bin/artisan: not found

Jetzt ändern Sie die Bilddatenbank aufphusion/baseimage:

➜  docker git:(master) ✗ cat Dockerfile 
#FROM docker:1.10
FROM phusion/baseimage
COPY build/ /
➜  docker git:(master) ✗ docker build -t artisan .
Sending build context to Docker daemon 10.15 MB
Step 1 : FROM phusion/baseimage
...
➜  docker git:(master) ✗ docker run -it artisan sh
# /bin/artisan
08:16:39.424 [ERROR] artisan: need a command, one of server, provision or build