Dockerfile
Build image from Dockerfile
Собираем из локального файла:
docker build .
docker build -f MyDockerfile -t ikemurami/myimage:v1.0 /path/to/dir/context
Цепочка FROM в Dockerfile
В dockerfile допустимо делать цепочки из образов. То есть билдим один образ (golang AS builder) для билда, а для запуска используем другой (alpine) и перекидываем бинарь из первого командой COPY.
FROM golang:1.14-stretch AS builder
ENV CGO_ENABLED=0
ENV GOOS=linux
ENV GO111MODULE=on
RUN mkdir -p /go/src/example.com/test/project
ADD . /go/src/example.com/test/project
WORKDIR /go/src/example.com/test/project/
# RUN go test -mod vendor -v ./...
RUN go build -mod vendor -a -o /bin/project /go/src/example.com/test/project/cmd/main.go
FROM alpine:3.10
RUN apk --no-cache add ca-certificates
WORKDIR /bin
COPY --from=builder /bin/project /bin/project
EXPOSE 8080
ENTRYPOINT ["/bin/project"]
ENTRYPOINT & CMD
ENTRYPOINT определяет программу, которая будет запускать при старте контейнера (по умолчанию, /bin/sh -c
).
CMD — определяет аргументы для ENTRYPOINT.
Соотв, если мы хотим сделать контейнер, посвященный одной программе, то переопределяем ENTRYPOINT.
Статьи
По командам докера (Dockerfile): https://habr.com/ru/company/ruvds/blog/439980/ https://infoboxcloud.ru/community/blog/infoboxcloud/200.html
Last updated
Was this helpful?