-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDockerfile
51 lines (38 loc) · 1.5 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
FROM python:3.10-slim-buster
ARG ENVIRONMENT
ARG USER_ID
ENV USERNAME django
ENV WORK_DIR /usr/src/app/
ENV ENVIRONMENT $ENVIRONMENT
ENV REQUIREMENTS_DIR /usr/src/requirements
ENV CMD_DIR /usr/src/commands
ENV PATH=${PATH}:/home/${USERNAME}/.local/bin
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
WORKDIR $WORK_DIR
# Instala os pacotes
RUN apt-get update \
&& apt-get -y install cron
# Cria um novo usuário (não root)
RUN groupadd --gid $USER_ID $USERNAME && \
useradd --uid $USER_ID --gid $USER_ID -m $USERNAME
# Cria os diretórios necessários para o COPY
RUN mkdir -p $REQUIREMENTS_DIR && mkdir -p $CMD_DIR && touch /var/log/cron.log
# Copia os arquivos/diretórios necessários para o container
COPY --chown=$USERNAME ./src/ $WORK_DIR
COPY --chown=$USERNAME ./requirements/${ENVIRONMENT}.txt ${REQUIREMENTS_DIR}/${ENVIRONMENT}.txt
COPY --chown=$USERNAME ./commands/${ENVIRONMENT}.sh ${CMD_DIR}/${ENVIRONMENT}.sh
COPY --chown=$USERNAME ./crontabs /usr/src/cron/crontabs
# Ajusta permissões para usuário novo
RUN chmod gu+rw /var/run && \
chmod gu+s /usr/sbin/cron && \
chown $USERNAME /etc/environment && \
chown $USERNAME /var/log/cron.log
# Define o usuário como o usuário novo
USER $USERNAME
# Instalação de pacotes python
RUN pip install --user -r ${REQUIREMENTS_DIR}/${ENVIRONMENT}.txt
# Dá permissão de execução aos scripts
RUN chmod u+x ${CMD_DIR}/${ENVIRONMENT}.sh
# Define o script default do container
CMD ["sh", "-c", "bash ${CMD_DIR}/${ENVIRONMENT}.sh"]