-
Notifications
You must be signed in to change notification settings - Fork 0
/
Dockerfile
50 lines (41 loc) · 1.73 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
FROM python:3.11.3-alpine3.18
LABEL mantainer="https://github.com/Vinicius02612"
# Essa variável de ambiente é usada para controlar se o Python deve
# gravar arquivos de bytecode (.pyc) no disco. 1 = Não, 0 = Sim
ENV PYTHONDONTWRITEBYTECODE 1
# Define que a saída do Python será exibida imediatamente no console ou em
# outros dispositivos de saída, sem ser armazenada em buffer.
# Em resumo, você verá os outputs do Python em tempo real.
ENV PYTHONUNBUFFERED 1
# Copia a pasta "djangoapp" e "scripts" para dentro do container.
COPY django_app /django_app
COPY scripts /scripts
# Entra na pasta djangoapp no container
WORKDIR /django_app
# A porta 8000 estará disponível para conexões externas ao container
# É a porta que vamos usar para o Django.
EXPOSE 8080
# RUN executa comandos em um shell dentro do container para construir a imagem.
# O resultado da execução do comando é armazenado no sistema de arquivos da
# imagem como uma nova camada.
# Agrupar os comandos em um único RUN pode reduzir a quantidade de camadas da
# imagem e torná-la mais eficiente.
RUN python -m venv /venv && \
/venv/bin/pip install --upgrade pip && \
/venv/bin/pip install -r /django_app/requirements.txt && \
adduser --disabled-password --no-create-home duser && \
mkdir -p /data/web/static && \
mkdir -p /data/web/media && \
chown -R duser:duser /venv && \
chown -R duser:duser /data/web/static && \
chown -R duser:duser /data/web/media && \
chmod -R 755 /data/web/static && \
chmod -R 755 /data/web/media && \
chmod -R +x /scripts
# Adiciona a pasta scripts e venv/bin
# no $PATH do container.
ENV PATH="/scripts:/venv/bin:$PATH"
# Muda o usuário para duser
USER duser
# Executa o arquivo scripts/commands.sh
CMD ["commands.sh"]