Многоступенчатый образ сборки не работает, в то время как нормальная сборка делает

У меня есть Dockerfile, который создает проект golang (который слушает поток Twitter и перечисляет твиты по какому-либо фильтру) из последнего изображения docker golang, прямо сейчас 1.10.3, примерно так:

FROM golang:1.10.3
COPY . /destination/
WORKDIR /destination/
RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o main .
CMD ["./main"]

и когда я запускаю образ, созданный командой сборки docker, он запускается без проблем. Проблема в том, что размер изображения составляет около 900 МБ.

Когда я пытаюсь собрать докер с многоступенчатой ​​сборкой, вот так:

FROM golang:1.10.3-alpine3.7 as builder
...
RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o main .
FROM busybox
COPY --from=builder /go/src/github.com/mygithubname/ /
WORKDIR /path-to-the-main-file/
CMD ["./main"]

Образ докера успешно создан и работает, но он просто не показывает мне твиты, когда они публикуются, и также не показывает никаких ошибок, что является наиболее запутанной частью. Даже когда я ssh в работающий контейнер и пинг Google, он показывает все, как должно быть.

У кого-нибудь есть подсказки, как я могу отладить эту проблему или получить еще журналы из работающего образа Docker?

1 ответ

Мало вещей

1) контейнер вышел? Если вы делаете Docker PS, кажется, он работает.

2) Вы проверили журнал докера {идентификатор контейнера}

3) Отражает ли /go/src/github.com/mygithubname/ местоположение сборки на первом этапе док-контейнера? Пример файла Docker, в котором копия отражает рабочий каталог среды сборки:

FROM golang AS build-env
ADD . /src/project
WORKDIR /src/project
RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o main .

# final stage
FROM busybox
WORKDIR /app
COPY --from=build-env /src/project/ .
CMD ["./main"]
Другие вопросы по тегам