Я делаю многоэтапную сборку Docker:
# Dockerfile
########## Build stage ##########
FROM golang:1.10 as build
ENV TEMP /go/src/github.com/my-id/my-go-project
WORKDIR $TEMP
COPY . .
RUN make build
########## Final stage ##########
FROM alpine:3.4
# ...
ENV HOME /home/$USER
ENV TEMP /go/src/github.com/my-id/my-go-project
COPY --from=build $TEMP/bin/my-daemon $HOME/bin/
RUN chown -R $USER:$GROUP $HOME
USER $USER
ENTRYPOINT ["my-daemon"]
, а Makefile
содержит частично:
build: bin
go build -v -o bin/my-daemon cmd/my-daemon/main.go
bin:
mkdir $@
Все это прекрасно работает с docker build
.
Теперь я хочу использовать Codeship , поэтому у меня есть:
# codeship-services.yml
cachemanager:
build:
image: my-daemon
dockerfile: Dockerfile
и:
# codeship-steps.yml
- name: my-daemon build
tag: master
service: my-service
command: true
Проблемаесли я делаю jet steps --master
, он все строит нормально, но тогда запускает контейнер, как будто я сделал docker run
.Зачем?Я не хочу, чтобы это делалось.
Это как если бы мне пришлось иметь два отдельных Dockerfile
с: один только для этапа сборки и один только для этапа выполнения и используйте первый с jet
.Но тогда это побеждает точку многоступенчатых сборок Docker.