Skip to content
Commits on Source (2)
......@@ -23,7 +23,7 @@ services:
app:
build:
context: .
dockerfile: Docker/Dockerfile
dockerfile: docker/Dockerfile
container_name: ${COMPOSE_PROJECT_NAME}-app
depends_on:
db:
......@@ -31,7 +31,7 @@ services:
env_file: .env
working_dir: /code
volumes:
- ./app:/code
- ./linkshortner:/code
ports:
- "8001:8000"
command: ["/entrypoint.sh"]
......
# docker/app/Dockerfile
FROM python:3.12-alpine
# Dependências do sistema (Alpine)
# - libpq e headers para Postgres
# - build-base para eventuais compilações (evite em prod; aqui facilita dev)
RUN apk add --no-cache \
bash \
curl \
libpq \
postgresql-client \
tzdata && \
apk add --no-cache --virtual .build-deps \
build-base \
musl-dev \
postgresql-dev
# Diretório de trabalho
WORKDIR /code
# Evita __pycache__, output imediato
ENV PYTHONDONTWRITEBYTECODE=1 \
PYTHONUNBUFFERED=1
# Copie seus requirements (sem expor seu código)
COPY linkshortner/requirements.txt /tmp/requirements.txt
# Instale dependências Python (ex.: Django, DRF, psycopg2-binary, gunicorn etc.)
RUN pip install --no-cache-dir -r /tmp/requirements.txt && \
apk del .build-deps
# Copie o entrypoint
COPY docker/entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
# Copie seu projeto
COPY linkshortner/ /code/
# Exponha a porta interna do Django
EXPOSE 8000
ENTRYPOINT ["/entrypoint.sh"]
......@@ -35,8 +35,9 @@ fi
# Servidor de aplicação
# Para desenvolvimento (autoreload):
echo ">> Iniciando servidor Django (dev) em 0.0.0.0:${APP_PORT}..."
exec python manage.py runserver 0.0.0.0:${APP_PORT}
echo ">> DEBUG: DJANGO_PORT=$DJANGO_PORT"
echo ">> Iniciando servidor Django (dev) em 0.0.0.0:${DJANGO_PORT}..."
exec python manage.py runserver 0.0.0.0:${DJANGO_PORT}
# Para produção, troque a última linha por algo como:
# exec gunicorn seu_projeto.wsgi:application --bind 0.0.0.0:${APP_PORT} --workers 3
# exec gunicorn seu_projeto.wsgi:application --bind 0.0.0.0:${DJANGO_PORT} --workers 3