Skip to content
Commits on Source (2)
...@@ -23,7 +23,7 @@ services: ...@@ -23,7 +23,7 @@ services:
app: app:
build: build:
context: . context: .
dockerfile: Docker/Dockerfile dockerfile: docker/Dockerfile
container_name: ${COMPOSE_PROJECT_NAME}-app container_name: ${COMPOSE_PROJECT_NAME}-app
depends_on: depends_on:
db: db:
...@@ -31,7 +31,7 @@ services: ...@@ -31,7 +31,7 @@ services:
env_file: .env env_file: .env
working_dir: /code working_dir: /code
volumes: volumes:
- ./app:/code - ./linkshortner:/code
ports: ports:
- "8001:8000" - "8001:8000"
command: ["/entrypoint.sh"] 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 ...@@ -35,8 +35,9 @@ fi
# Servidor de aplicação # Servidor de aplicação
# Para desenvolvimento (autoreload): # Para desenvolvimento (autoreload):
echo ">> Iniciando servidor Django (dev) em 0.0.0.0:${APP_PORT}..." echo ">> DEBUG: DJANGO_PORT=$DJANGO_PORT"
exec python manage.py runserver 0.0.0.0:${APP_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: # 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