diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..1e0cde6 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,3 @@ +.github/ +.pytest_cache/ +coverage.xml diff --git a/Dockerfile b/Dockerfile index a7d0f43..211568d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM python:3.11-slim-buster +FROM python:3.11-alpine ENV PYTHONDONTWRITEBYTECODE 1 ENV PYTHONUNBUFFERED 1 @@ -6,15 +6,19 @@ ENV PYTHONUNBUFFERED 1 RUN mkdir /code WORKDIR /code -COPY . /code +COPY requirements.txt /code -RUN apt-get update && \ - apt-get install -y gcc vim postgresql-client nginx && \ - apt-get remove --purge --auto-remove -y +RUN apk update && \ + apk add gcc vim postgresql-client openrc nginx && \ + apk del gcc && \ + openrc && \ + touch /run/openrc/softlevel && \ + pip install -r requirements.txt + +COPY . /code COPY nginx/nginx.conf /etc/nginx/sites-enabled/default -RUN pip install -r requirements.txt && \ - python manage.py collectstatic --noinput +RUN python manage.py collectstatic --noinput -CMD [ "bash", "./scripts/run.sh" ] +CMD [ "sh", "./scripts/run.sh" ] diff --git a/README.md b/README.md index c969f97..02c39c8 100644 --- a/README.md +++ b/README.md @@ -37,8 +37,6 @@ celery -A config worker -B -l debug pytest --cov ``` - - ## Variables de entorno Puedes crear un archivo `.env` con las siguientes variables de entorno. @@ -67,3 +65,24 @@ Puedes crear un archivo `.env` con las siguientes variables de entorno. | REDSYS_CURRENCY_CODE | 978 | Código de moneda de Redsys | | REDSYS_TPV_DOMAIN | | Dominio del TPV para redirección de Redsys | +## Docker + +### Construir imagen + +```bash +docker build -t shoppy . +``` + +### Crear contenedor + +**API** + +```bash +docker run -it --rm -p 8000:80 -e RUN_SERVER=TRUE --env-file=.env shoppy_api +``` + +**Tareas en segundo plano** + +```bash +docker run -it --rm -p 8000:80 -e RUN_CELERY=TRUE --env-file=.env shoppy_tasks +``` diff --git a/config/asgi.py b/config/asgi.py index fc9906d..856079b 100644 --- a/config/asgi.py +++ b/config/asgi.py @@ -2,6 +2,6 @@ import os from django.core.asgi import get_asgi_application -os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings.production") +os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings") application = get_asgi_application() diff --git a/config/celery.py b/config/celery.py index cf9fcf6..55b7fa5 100644 --- a/config/celery.py +++ b/config/celery.py @@ -2,7 +2,7 @@ import os from celery import Celery # set the default Django settings module for the 'celery' program. -os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings.base") +os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings") app = Celery("config") diff --git a/config/wsgi.py b/config/wsgi.py index ee192cf..8509335 100644 --- a/config/wsgi.py +++ b/config/wsgi.py @@ -2,6 +2,6 @@ import os from django.core.wsgi import get_wsgi_application -os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings.production") +os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings") application = get_wsgi_application() diff --git a/scripts/run.sh b/scripts/run.sh index 2536bf5..a74cfe0 100644 --- a/scripts/run.sh +++ b/scripts/run.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/sh ASGI_HOST=${WSGI_HOST:="0.0.0.0"} ASGI_PORT=8000 @@ -10,7 +10,7 @@ RUN_CELERY=${RUN_CELERY:="FALSE"} if [ $RUN_SERVER = "TRUE" ]; then - service nginx restart + rc-service nginx start uvicorn --workers $ASGI_WORKERS --host $ASGI_HOST --port $ASGI_PORT config.asgi:application elif [ $RUN_CELERY = "TRUE" ]; then service nginx stop diff --git a/shop/api/v1/routers.py b/shop/api/v1/routers.py index 8e31c16..3ac356e 100644 --- a/shop/api/v1/routers.py +++ b/shop/api/v1/routers.py @@ -13,7 +13,7 @@ router = DefaultRouter() router.register("taxes", TaxViewSet) router.register("customers", CustomerViewSet) -router.register("product", ProductViewSet) +router.register("products", ProductViewSet) router.register("product-prices", ProductPriceViewSet) router.register("orders", OrderViewSet) router.register("orders/(?P[^/.]+)/lines", OrderLineViewSet)