Вам не нужно run
контейнер, но вам нужно create
один, чтобы иметь возможность cp
(скопировать) двоичный файл из этого контейнера впоследствии.Необходимые 2 команды:
docker container create ...
docker container cp $container_name:/path/in/container /path/on/host
Пример:
main.go:
package main
import "fmt"
func main() {
fmt.Println("hello world")
}
Dockerfile:
FROM golang:1.10-alpine3.7
WORKDIR /go/src/app
COPY . .
RUN go get -d -v ./...
RUN go install -v ./...
CMD ["app"]
Сборка - создание temp
контейнер - копирование двоичного файла - очистка:
docker build -t go-build-test .
docker container create --name temp go-build-test
docker container cp temp:/go/bin/app ./
docker container rm temp
Бинарный файл былскопировать в вашу текущую папку:
~/docker_tests/go-build-test$ ls
app Dockerfile main.go
~/docker_tests/go-build-test$ ./app
hello world