Инструкции Dockerfile — различия между версиями

Материал из megapuper
Перейти к: навигация, поиск
 
(не показаны 24 промежуточные версии этого же участника)
Строка 1: Строка 1:
'''FROM''' задаёт базовый (родительский) образ<br/>
+
'''Dockerfile''' - файл содержащий инструкции для создания образа контейнера
'''LABEL''' описывает метаданные. Например — сведения о том, кто создал и поддерживает образ<br/>
+
 
'''ENV''' устанавливает постоянные переменные среды<br/>
+
 
'''RUN''' выполняет команду и создаёт слой образа. Используется для установки в контейнер пакетов<br/>
+
'''<font color=blue>FROM</font>''' - задаёт базовый (родительский) образ<br/>
'''COPY''' копирует в контейнер файлы и папки<br/>
+
'''<font color=blue>LABEL</font>''' - описывает метаданные. Например — сведения о том, кто создал и поддерживает образ<br/>
'''ADD''' копирует файлы и папки в контейнер, может распаковывать локальные .tar-файлы<br/>
+
'''<font color=blue>ENV</font>''' - устанавливает постоянные переменные среды<br/>
'''CMD''' описывает команду с аргументами, которую нужно выполнить когда контейнер будет запущен. Аргументы могут быть переопределены при запуске контейнера. В файле может присутствовать лишь одна инструкция CMD(запускается оболочка /bin/sh)<br/>
+
'''<font color=blue>RUN</font>''' - выполняет команду и создаёт слой образа. Используется для установки в контейнер пакетов<br/>
'''WORKDIR''' задаёт рабочую директорию для следующей инструкции<br/>
+
'''<font color=blue>COPY</font>''' - копирует в контейнер файлы и папки<br/>
'''ARG''' задаёт переменные для передачи Docker во время сборки образа<br/>
+
'''<font color=blue>ADD</font>''' - копирует файлы и папки в контейнер, может распаковывать архив на лету<br/>
'''ENTRYPOINT''' предоставляет команду с аргументами для вызова во время выполнения контейнера. Аргументы не переопределяются<br/>
+
'''<font color=blue>CMD</font>''' - описывает команду с аргументами, которую нужно выполнить когда контейнер будет запущен. Аргументы могут быть переопределены при запуске контейнера. В файле может присутствовать лишь одна инструкция CMD(запускается оболочка /bin/sh)<br/>
'''EXPOSE''' указывает на необходимость открыть порт<br/>
+
'''<font color=blue>USER</font>''' - указывает от какого пользователя всё будет работать<br>
'''VOLUME''' создаёт точку монтирования для работы с постоянным хранилищем<br/>
+
'''<font color=blue>WORKDIR</font>''' - задаёт рабочую директорию для следующей инструкции<br/>
'''MAINTAINER''' - информация об авторе имя и <email><br/>
+
'''<font color=blue>ARG</font>''' - задаёт переменные для передачи Docker во время сборки образа<br/>
 +
'''<font color=blue>ENTRYPOINT</font>''' - предоставляет команду с аргументами для вызова во время выполнения контейнера. Аргументы не переопределяются<br/>
 +
'''<font color=blue>EXPOSE</font>''' - указывает на необходимость открыть порт, сам порт не открывает<br/>
 +
'''<font color=blue>VOLUME</font>''' - создаёт точку монтирования для работы с постоянным хранилищем<br/>
 +
'''<font color=blue>MAINTAINER</font>''' - информация об авторе имя и <email><br/>
 +
 
 +
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;"]
 +
 
 +
 +
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;"]


https://docs.docker.com/engine/reference/builder/