Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Уух, сколько слоев то, в продакшене за такое по рукам бьют ))) Вместо RUN wget… можно использовать ADD ...
ADD https://example.com/big.tar.xz /usr/src/things/
RUN tar -xJf /usr/src/things/big.tar.xz -C /usr/src/things
RUN make -C /usr/src/things allRUN mkdir -p /usr/src/things \
&& curl -SL https://example.com/big.tar.xz \
| tar -xJC /usr/src/things \
&& make -C /usr/src/things allНо кстати,ADD же может сразу распаковывать, tar.gz/zip так точно. Единственное — ADD не поддерживает аутентификацию, но это не ваш случай
docs.docker.com/develop/develop-images/dockerfile_best-practices/#add-or-copy
python3-dev \что это делает в рабочем образе? Прочитайте что такое multistage builds
…
build-essential \
apt update
apt install -y cargo
cargo install prometheus_wireguard_exporterЕщё раз перечитайте первую строку моего предыдущего комментария и не набрасывайте, смысл статьи не показать все best practices, а с близкой к максимальной скорости реализовать автоматизацию.статья для новичков, а у вас такие ляпы, но дело ваше
Чтобы покопаться в слоях, мало ли не знаете и вам интересно, есть прикольная штука (таких много есть, но эта нравится): github.com/wagoodman/diveда много чего есть, у нас в CI встроен анализатор docker образов
ADD example.com/big.tar.xz /usr/src/things/оказывается они редиски убрали эту фичу у ADD в 17.06, а было очень удобно
RUN tar -xJf /usr/src/things/big.tar.xz -C /usr/src/things
RUN make -C /usr/src/things all
And instead, do something like:
RUN set -x && \кстати очень плохая практика, так и сломать что то можно в системе. Я бы не советовал так делать. Как минимум в ansible нахлебался вдоволь
ln -sf /usr/bin/python3 /usr/bin/python && ln -sf /usr/bin/pip3 /usr/bin/pip
На самом питон тут вообще не нужен, т.к. aws cli ставит свой, а несколько остальных утилит просто не используются.
Но в рамках уже написанного можно использовать установленное совершенно без проблем.
Вообще люблю я эти shyaml, jq, yq, envsubst и т.д. Места много не занимают, а автоматизации вполне хорошо помогают, удобно иметь их в случае чего.
del
DevOps: автоматизация инфраструктуры на примере Terraform, docker, bash, prometheus exporters, Gitlab и WireGuard