Инструкции Dockerfile — различия между версиями
Root (обсуждение | вклад) |
Root (обсуждение | вклад) |
||
(не показана 21 промежуточная версия этого же участника) | |||
Строка 7: | Строка 7: | ||
'''<font color=blue>RUN</font>''' - выполняет команду и создаёт слой образа. Используется для установки в контейнер пакетов<br/> | '''<font color=blue>RUN</font>''' - выполняет команду и создаёт слой образа. Используется для установки в контейнер пакетов<br/> | ||
'''<font color=blue>COPY</font>''' - копирует в контейнер файлы и папки<br/> | '''<font color=blue>COPY</font>''' - копирует в контейнер файлы и папки<br/> | ||
− | '''<font color=blue>ADD</font>''' - копирует файлы и папки в контейнер, может распаковывать | + | '''<font color=blue>ADD</font>''' - копирует файлы и папки в контейнер, может распаковывать архив на лету<br/> |
'''<font color=blue>CMD</font>''' - описывает команду с аргументами, которую нужно выполнить когда контейнер будет запущен. Аргументы могут быть переопределены при запуске контейнера. В файле может присутствовать лишь одна инструкция CMD(запускается оболочка /bin/sh)<br/> | '''<font color=blue>CMD</font>''' - описывает команду с аргументами, которую нужно выполнить когда контейнер будет запущен. Аргументы могут быть переопределены при запуске контейнера. В файле может присутствовать лишь одна инструкция CMD(запускается оболочка /bin/sh)<br/> | ||
+ | '''<font color=blue>USER</font>''' - указывает от какого пользователя всё будет работать<br> | ||
'''<font color=blue>WORKDIR</font>''' - задаёт рабочую директорию для следующей инструкции<br/> | '''<font color=blue>WORKDIR</font>''' - задаёт рабочую директорию для следующей инструкции<br/> | ||
'''<font color=blue>ARG</font>''' - задаёт переменные для передачи Docker во время сборки образа<br/> | '''<font color=blue>ARG</font>''' - задаёт переменные для передачи Docker во время сборки образа<br/> | ||
Строка 16: | Строка 17: | ||
'''<font color=blue>MAINTAINER</font>''' - информация об авторе имя и <email><br/> | '''<font color=blue>MAINTAINER</font>''' - информация об авторе имя и <email><br/> | ||
− | FROM | + | FROM ubuntu:18.04 |
− | RUN | + | MAINTAINER outlander <finston@gmail.com> |
+ | |||
+ | RUN apt-get update && \ | ||
+ | apt-get install -y python3 python3-pip && \ | ||
+ | pip3 install flask virtualenv && \ | ||
+ | useradd -m app && \ | ||
+ | apt-get clean && \ | ||
+ | rm -rf /var/lib/apt/lists/* | ||
+ | |||
+ | USER app | ||
+ | |||
+ | COPY --chown=app:app . /srv/www/project | ||
+ | |||
+ | WORKDIR /srv/www/project | ||
+ | |||
+ | ENTRYPOINT ["cowsay"] | ||
+ | |||
+ | |||
+ | FROM alpine | ||
+ | |||
+ | MAINTAINER outlander <finston@gmail.com> | ||
+ | |||
+ | RUN apk add --no-cache nginx && \ | ||
+ | mkdir -p /run/nginx | ||
+ | |||
+ | COPY custom.conf /etc/nginx/conf.d/ | ||
+ | |||
+ | COPY . /opt | ||
+ | |||
+ | EXPOSE 80 | ||
+ | |||
+ | CMD ["nginx", "-g", "daemon off;"] | ||
+ | |||
+ | |||
+ | FROM alpine | ||
+ | |||
+ | ENV NGINX_VERSION 1.16.1-r6 | ||
+ | |||
+ | RUN apk add --no-cache --repository http://dl-cdn.alpinelinux.org/alpine/v3.11/main nginx=${NGINX_VERSION} && \ | ||
+ | mkdir -p /run/nginx | ||
+ | |||
+ | COPY custom.conf /etc/nginx/conf.d/ | ||
+ | |||
+ | COPY . /opt | ||
+ | |||
+ | EXPOSE 80 | ||
+ | |||
+ | CMD ["nginx", "-g", "daemon off;"] | ||
+ | |||
+ | |||
+ | https://docs.docker.com/engine/reference/builder/ |
Текущая версия на 00:15, 28 сентября 2021
Dockerfile - файл содержащий инструкции для создания образа контейнера
FROM - задаёт базовый (родительский) образ
LABEL - описывает метаданные. Например — сведения о том, кто создал и поддерживает образ
ENV - устанавливает постоянные переменные среды
RUN - выполняет команду и создаёт слой образа. Используется для установки в контейнер пакетов
COPY - копирует в контейнер файлы и папки
ADD - копирует файлы и папки в контейнер, может распаковывать архив на лету
CMD - описывает команду с аргументами, которую нужно выполнить когда контейнер будет запущен. Аргументы могут быть переопределены при запуске контейнера. В файле может присутствовать лишь одна инструкция CMD(запускается оболочка /bin/sh)
USER - указывает от какого пользователя всё будет работать
WORKDIR - задаёт рабочую директорию для следующей инструкции
ARG - задаёт переменные для передачи Docker во время сборки образа
ENTRYPOINT - предоставляет команду с аргументами для вызова во время выполнения контейнера. Аргументы не переопределяются
EXPOSE - указывает на необходимость открыть порт, сам порт не открывает
VOLUME - создаёт точку монтирования для работы с постоянным хранилищем
MAINTAINER - информация об авторе имя и <email>
FROM ubuntu:18.04 MAINTAINER outlander <finston@gmail.com> RUN apt-get update && \ apt-get install -y python3 python3-pip && \ pip3 install flask virtualenv && \ useradd -m app && \ apt-get clean && \ rm -rf /var/lib/apt/lists/* USER app COPY --chown=app:app . /srv/www/project WORKDIR /srv/www/project ENTRYPOINT ["cowsay"]
FROM alpine MAINTAINER outlander <finston@gmail.com> RUN apk add --no-cache nginx && \ mkdir -p /run/nginx COPY custom.conf /etc/nginx/conf.d/ COPY . /opt EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]
FROM alpine ENV NGINX_VERSION 1.16.1-r6 RUN apk add --no-cache --repository http://dl-cdn.alpinelinux.org/alpine/v3.11/main nginx=${NGINX_VERSION} && \ mkdir -p /run/nginx COPY custom.conf /etc/nginx/conf.d/ COPY . /opt EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]