Мне нравится идея, что все мои микросервисы могут быть собраны как docker build .
с использованием многоступенчатых сборок.
Тем не менее, мне также очень нравится делать тест на дым через быстрый docker run
& curl /endpoint
после сборки, чтобы проверить, что приложение действительно появляется.
Мне интересно, есть ли способ обернуть это в многоступенчатый Dockerfile
? Я решил проблему отсутствия необходимости указывать правильный --target
, просто вставив трейлинг FROM app
.
Вот что я хотел бы сделать:
FROM alpine:latest as builder
WORKDIR /tmp/
RUN echo "#!/bin/sh" > helloworld.sh && \
echo "echo hello world" >> helloworld.sh && \
chmod oug+x helloworld.sh
FROM alpine:latest as app
WORKDIR /root/
COPY --from=builder /tmp/helloworld.sh .
CMD ["./helloworld.sh"]
FROM docker:latest as tester
# Fails - no docker daemon - impossible to mount /var/run/docker.sock during build ?
RUN output=`docker run --rm app`; if [ "$output" == 'hello world' ]; then exit 0; else exit 1; fi
FROM app # means the second image is the default output