Dockerfile
| Introduction | |
| FROM | |
| LABEL | |
| RUN | |
| COPY | |
| ENTRYPOINT | |
| WORKDIR | |
| EXPOSE | |
| ENV | |
| VOLUME | |
| Статьи про Docker |
Introduction
Dockerfile используется для создания образов.
Если вы использовали
make
или
batch
файлы, то сможете увидеть некоторые аналогии
FROM
Инструкция FROM нужна, чтобы использовать другие образы. Если вам будет нужен Python можно взять готовый образ
FROM python:3.9
LABEL
Инструкция LABEL нужна, чтобы указать автора
LABEL author="andreyolegovich"
RUN
Инструкция RUN нужна, чтобы запусть команды. Например, команды Bash
RUN python -m pip install --upgrade pip
# или
RUN npm install
COPY
Когда код уже готов к продакшену инструкцией COPY его копируют в container.
COPY src/ $YOUR_APP
ENTRYPOINT
Инструкция ENTRYPOINT указывает на точку входа в container.
Желательно оформить в виде json массива.
ENTRYPOINT ["node", "server.js"]
WORKDIR
Инструкция WORKDIR указывает на рабочую директорию. Где данный container будет запускаться.
пример
WORKDIR /var/app
EXPOSE
Инструкция EXPOSE открывает определённый порт
Например открыть порт 5000 для
Flask
EXPOSE 5000
ENV
С помощью ENV можно задать переменные окружения.
Например можно задать рабочую директорию через ENV и потом переиспользовать
ENV APP_DIR=/home/app/python
RUN mkdir -p $APP_DIR
WORKDIR $APP_DIR
COPY src/ $APP_DIR
VOLUME
С помощью VOLUME можно указать в какой диретории создать внешний раздел.
VOLUME ["/var/app"]
или несколько разделов
VOLUME ["/var/app", "/var/log]
Пример
FROM python:3.9
ENV MICRO_SERVICE=/home/app/webapp
# set work directory
RUN mkdir -p $MICRO_SERVICE
# where your code lives
WORKDIR $MICRO_SERVICE
# set environment variables
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
# install dependencies
RUN python -m pip install --upgrade pip
# copy project
COPY src/ $MICRO_SERVICE
RUN python -m pip install -r ./requirements.txt
EXPOSE 8501
CMD streamlit run app.py