-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathDockerfile
59 lines (49 loc) · 2.04 KB
/
Dockerfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
FROM python:3.12.8
### External argumetns ###
ARG PROJECT_DESCRIPTION
ARG PROJECT_NAME
ARG PROJECT_VERSION
### Labels ###
LABEL org.opencontainers.image.source https://github.com/obervinov/${PROJECT_NAME}
LABEL org.opencontainers.image.description ${PROJECT_DESCRIPTION}
LABEL org.opencontainers.image.version ${PROJECT_VERSION}
LABEL org.opencontainers.image.authors github.obervinov@proton.me
LABEL org.opencontainers.image.licenses https://github.com/obervinov/${PROJECT_NAME}/blob/${PROJECT_VERSION}/LICENSE
LABEL org.opencontainers.image.documentation https://github.com/obervinov/${PROJECT_NAME}/blob/${PROJECT_VERSION}/README.md
LABEL org.opencontainers.image.source https://github.com/obervinov/${PROJECT_NAME}/blob/${PROJECT_VERSION}
### Environment variables ###
ENV PIP_NO_CACHE_DIR=off
ENV PIP_DISABLE_PIP_VERSION_CHECK=on
ENV POETRY_VIRTUALENVS_IN_PROJECT=true
ENV POETRY_NO_INTERACTION=1
ENV PYTHONUNBUFFERED=1
ENV PYTHONDONTWRITEBYTECODE=1
ENV VENV_PATH=/home/${PROJECT_NAME}/app/.venv
ENV PATH=/home/${PROJECT_NAME}/.local/bin:$VENV_PATH/bin:$PATH
### Preparing user and directories ###
RUN useradd -m -d /home/${PROJECT_NAME} -s /bin/bash ${PROJECT_NAME} && \
mkdir -p /home/${PROJECT_NAME}/app && \
mkdir -p /home/${PROJECT_NAME}/tmp && \
chown -R ${PROJECT_NAME}:${PROJECT_NAME} /home/${PROJECT_NAME}
### Prepare tools and fix vulnerabilities ###
RUN apt-get update && apt-get upgrade -y && \
apt-get install -y --no-install-recommends \
git curl && \
apt-get clean && rm -rf /var/lib/apt/lists/*
RUN pip3 install --upgrade pip setuptools
### Switching context ###
USER ${PROJECT_NAME}
WORKDIR /home/${PROJECT_NAME}/app
### Copy source code ###
COPY src/ src/
COPY tests/ tests/
COPY pyproject.toml .
COPY poetry.lock .
COPY *.md ./
COPY LICENSE ./
### Installing poetry and python dependeces ###
RUN curl -sSL https://install.python-poetry.org | python -
RUN poetry install
ENV PYTHONPATH=/home/${PROJECT_NAME}/app/src:/home/${PROJECT_NAME}/app/.venv/lib/python3.12/site-packages
### Entrypoint ###
CMD [ "python3", "src/bot.py" ]