Ещё одна классная фича, доступная с новым синтаксисом
Раньше:
#синийкит #dockerо
Dockerfile
— многострочные команды, т.е. поддержка полноценных скриптов! Умные люди называют такой синтаксис heredoc. Теперь можно больше не писать эти дурацкие амперсанды и бэкслеши в конце каждой строчки в длинной команде.Раньше:
FROM debian
RUN apt-get update \
&& apt-get install -y vim
Сейчас:# syntax=docker/dockerfile:1.3-labs
FROM debian
RUN <<eot bash
apt-get update
apt-get install -y vim
eot
А ещё таким образом можно запускать даже скрипты на python
(да и вообще любые скрипты). Скрипт выполнится, результаты его работы останутся в образе, но сам он никогда туда не попадёт, потому что он вообще не сохраняется на диск. Пока не придумал, зачем такое может пригодиться, но прикольно:# syntax=docker/dockerfile:1.3-labs
FROM python:3.9-slim-buster
RUN python3 <<EOF
for i in range(10):
with open(f"/{i}.txt", "w") as f:
f.write(f"File {i}")
EOF
Источник: https://twitter.com/iximiuz/status/1436357612740694016?s=20#синийкит #dockerо
Twitter
Ivan Velichko
Dockerfile:1.3 brought multiline RUN support 🔥 That's how a modern Dockerfile may look like # syntax=docker/dockerfile:1.3-labs FROM debian RUN <<eot bash apt-get update apt-get install -y vim eot No more nasty && in bash scripts. Yay!