Новичок в Docker, и то, что кажется простой проблемой, не работает. Я хотел бы создать двоичный файл внутри файла докеров и выполнить его в docker-compose.
Dockerfile:
FROM golang:1.10
ENV DIR=/go/src/api
RUN go get github.com/Masterminds/glide
WORKDIR $DIR
ADD glide.yaml glide.yaml
ADD glide.lock glide.lock
RUN glide install
COPY . $DIR
RUN CGO_ENABLED=0 GOOS=linux go build -o main .
CMD main
А в моем docker-compose.yml у меня такое:
version: '2'
services:
api:
build:
context: ./api
dockerfile: Dockerfile
ports:
- 8000:8000
Однако при запуске из docker-compose исполняемый файл main отсутствует. Я действительно добавил command: ls в файл docker-compose, но его там нет. Затем я добавил ls в образ Dockerfile, и main уже есть.
Как предотвратить потерю main при переводе?
Что значит «потерянный в переводе»? Я никогда не видел, чтобы ты что-нибудь делал с главным? Куда вы его копируете / добавляете / монтируете?
Мне нужен том для этого? Бинарный файл создается как часть изображения. Он не может найти файл, потому что на docker-compose up он выдает ошибку, что main не найден.


Это весь ваш docker-compose.yml? Проверка того, что вы не определили объем.