Dockerfile
Структура dockerfile
FROM
- Образ на осонове которого происходит наследованиеARG
- Параметры которые живут только в момент сборкиENV
- Параметры которые живут и после сборкиLABEL
- Параметры для ярлыков - время сборки, хеш коммита, ссылка настраницу проекта/докерфайла и т.д.RUN
- Каждый RUN отдельный слой, по максиуму надо стараться групировать их по логическим параметрамADD
- Добавляет файлы в каталог (архивы распаковывает, так же можно указывать URL)COPY
- В отличии от ADD только копирует файлы
Пример добавлеия репозитория
RUN set -x \
&& apt-get update -q \
&& apt-get install -q -y \
dirmngr \
gnupg2 \
&& apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654 \
&& echo "deb http://packages.ros.org/ros/ubuntu bionic main" > /etc/apt/sources.list.d/ros1-latest.list \
&& apt purge -y dirmngr \
gnupg2 \
&& rm -fr /var/lib/apt/lists/* /tmp/* /var/tmp/* /var/cache/apt/archives/*
Пример multi-stage сборки
FROM golang:1.7.3 AS builder
WORKDIR /go/src/github.com/alexellis/href-counter/
RUN set -x \
&& go get -d -v golang.org/x/net/html
COPY app.go .
RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o app .
FROM alpine:latest
RUN set -x \
&& apk --no-cache add ca-certificates
WORKDIR /root/
COPY --from=builder /go/src/github.com/alexellis/href-counter/app .
CMD ["./app"]
Пример multi-stage копирование из внешнего образа
...
COPY --from=nginx:latest /etc/nginx/nginx.conf /nginx.conf
...
Денис Валентинович