chore(root): remove docker-compose.yml
Docker Compose moved to Dockerfile and entrypoint for streamlined deployment.
This commit is contained in:
4 files changed
+107
-30
No files matched your search
+22
-15
@@ -1,23 +1,30 @@
|
|||||||
# Django settings
|
# Django settings
|
||||||
DJANGO_SETTINGS_MODULE=config.settings.development
|
DJANGO_SETTINGS_MODULE=config.settings.development
|
||||||
SECRET_KEY=your-secret-key
|
SECRET_KEY=your-secret-key
|
||||||
ALLOWED_HOSTS=api.your-domain.com,www.your-domain.com
|
ALLOWED_HOSTS=localhost,127.0.0.1
|
||||||
|
|
||||||
# Database (individual parameters)
|
# Database (MySQL)
|
||||||
DB_NAME=
|
DB_NAME=project_management
|
||||||
DB_USER=
|
DB_USER=project_user
|
||||||
DB_PASSWORD=
|
DB_PASSWORD=project_password
|
||||||
DB_HOST=
|
DB_HOST=localhost
|
||||||
DB_PORT=
|
DB_PORT=3306
|
||||||
|
|
||||||
# Frontend URL
|
# Site
|
||||||
FRONTEND_URL=https://frontend.your-domain.com,https://www.frontend.your-domain.com
|
BASE_URL=http://localhost:8000
|
||||||
|
SITE_NAME=Project Management
|
||||||
|
|
||||||
# Email settings
|
# Frontend (CORS)
|
||||||
EMAIL_HOST=
|
FRONTEND_URL=http://localhost:8000
|
||||||
EMAIL_PORT=
|
|
||||||
EMAIL_USE_TLS=
|
# Email (SMTP)
|
||||||
|
EMAIL_HOST=smtp.gmail.com
|
||||||
|
EMAIL_PORT=587
|
||||||
|
EMAIL_USE_TLS=True
|
||||||
EMAIL_HOST_USER=
|
EMAIL_HOST_USER=
|
||||||
EMAIL_HOST_PASSWORD=
|
EMAIL_HOST_PASSWORD=
|
||||||
DEFAULT_FROM_EMAIL=
|
|
||||||
SERVER_EMAIL=
|
# Google OAuth
|
||||||
|
GOOGLE_CLIENT_ID=
|
||||||
|
GOOGLE_CLIENT_SECRET=
|
||||||
|
GOOGLE_REDIRECT_URI=http://localhost:8000/api/auth/google/callback/
|
||||||
+23
-15
@@ -1,35 +1,43 @@
|
|||||||
FROM python:3.13-slim
|
FROM python:3.13-slim
|
||||||
|
|
||||||
ENV PYTHONDONTWRITEBYTECODE=1
|
ENV PYTHONDONTWRITEBYTECODE=1 \
|
||||||
ENV PYTHONUNBUFFERED=1
|
PYTHONUNBUFFERED=1 \
|
||||||
ENV PIP_NO_CACHE_DIR=1
|
PIP_NO_CACHE_DIR=1 \
|
||||||
ENV PIP_DISABLE_PIP_VERSION_CHECK=1
|
PIP_DISABLE_PIP_VERSION_CHECK=1 \
|
||||||
|
NODE_VERSION=20
|
||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||||
default-libmysqlclient-dev \
|
default-libmysqlclient-dev \
|
||||||
build-essential \
|
build-essential \
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
|
||||||
|
|
||||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
||||||
curl \
|
curl \
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
&& curl -fsSL https://deb.nodesource.com/setup_${NODE_VERSION}.x | bash - \
|
||||||
ENV NODE_VERSION=20
|
|
||||||
RUN curl -fsSL https://deb.nodesource.com/setup_${NODE_VERSION}.x | bash - \
|
|
||||||
&& apt-get install -y nodejs \
|
&& apt-get install -y nodejs \
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
COPY requirements.txt .
|
COPY requirements.txt .
|
||||||
RUN pip install --no-cache-dir -r requirements.txt
|
RUN pip install --no-cache-dir -r requirements.txt
|
||||||
|
|
||||||
RUN python manage.py tailwind install
|
|
||||||
|
|
||||||
|
|
||||||
COPY . .
|
COPY . .
|
||||||
|
|
||||||
RUN python manage.py collectstatic --noinput || true
|
ARG DJANGO_SETTINGS_MODULE=config.settings.production
|
||||||
|
ENV DJANGO_SETTINGS_MODULE=${DJANGO_SETTINGS_MODULE}
|
||||||
|
ARG SECRET_KEY
|
||||||
|
ENV SECRET_KEY=${SECRET_KEY}
|
||||||
|
|
||||||
|
RUN python manage.py tailwind install && python manage.py collectstatic --noinput
|
||||||
|
|
||||||
|
RUN addgroup --system --gid 1001 app && \
|
||||||
|
adduser --system --uid 1001 --gid 1001 app && \
|
||||||
|
chown -R app:app /app
|
||||||
|
|
||||||
EXPOSE 8000
|
EXPOSE 8000
|
||||||
|
|
||||||
CMD ["gunicorn", "config.wsgi:application", "--bind", "0.0.0.0:8000"]
|
COPY --chown=app:app docker-entrypoint.sh /docker-entrypoint.sh
|
||||||
|
RUN chmod +x /docker-entrypoint.sh
|
||||||
|
|
||||||
|
USER app
|
||||||
|
|
||||||
|
ENTRYPOINT ["/docker-entrypoint.sh"]
|
||||||
|
CMD ["gunicorn", "config.wsgi:application", "--bind", "0.0.0.0:8000"]
|
||||||
@@ -0,0 +1,56 @@
|
|||||||
|
services:
|
||||||
|
db:
|
||||||
|
image: mysql:8.0
|
||||||
|
volumes:
|
||||||
|
- mysql_data:/var/lib/mysql
|
||||||
|
environment:
|
||||||
|
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-rootpassword}
|
||||||
|
MYSQL_DATABASE: ${DB_NAME:-project_management}
|
||||||
|
MYSQL_USER: ${DB_USER:-project_user}
|
||||||
|
MYSQL_PASSWORD: ${DB_PASSWORD:-project_password}
|
||||||
|
ports:
|
||||||
|
- "3306:3306"
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
|
||||||
|
timeout: 5s
|
||||||
|
retries: 10
|
||||||
|
|
||||||
|
app:
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
args:
|
||||||
|
DJANGO_SETTINGS_MODULE: ${DJANGO_SETTINGS_MODULE:-config.settings.production}
|
||||||
|
SECRET_KEY: ${SECRET_KEY}
|
||||||
|
volumes:
|
||||||
|
- static_volume:/app/staticfiles
|
||||||
|
- media_volume:/app/media
|
||||||
|
ports:
|
||||||
|
- "8000:8000"
|
||||||
|
environment:
|
||||||
|
DJANGO_SETTINGS_MODULE: ${DJANGO_SETTINGS_MODULE:-config.settings.production}
|
||||||
|
SECRET_KEY: ${SECRET_KEY}
|
||||||
|
ALLOWED_HOSTS: ${ALLOWED_HOSTS:-localhost,127.0.0.1}
|
||||||
|
DB_NAME: ${DB_NAME:-project_management}
|
||||||
|
DB_USER: ${DB_USER:-project_user}
|
||||||
|
DB_PASSWORD: ${DB_PASSWORD:-project_password}
|
||||||
|
DB_HOST: db
|
||||||
|
DB_PORT: ${DB_PORT:-3306}
|
||||||
|
BASE_URL: ${BASE_URL:-http://localhost:8000}
|
||||||
|
SITE_NAME: ${SITE_NAME:-Project Management}
|
||||||
|
FRONTEND_URL: ${FRONTEND_URL:-http://localhost:8000}
|
||||||
|
GOOGLE_CLIENT_ID: ${GOOGLE_CLIENT_ID:-}
|
||||||
|
GOOGLE_CLIENT_SECRET: ${GOOGLE_CLIENT_SECRET:-}
|
||||||
|
GOOGLE_REDIRECT_URI: ${GOOGLE_REDIRECT_URI:-}
|
||||||
|
EMAIL_HOST: ${EMAIL_HOST:-}
|
||||||
|
EMAIL_PORT: ${EMAIL_PORT:-}
|
||||||
|
EMAIL_USE_TLS: ${EMAIL_USE_TLS:-}
|
||||||
|
EMAIL_HOST_USER: ${EMAIL_HOST_USER:-}
|
||||||
|
EMAIL_HOST_PASSWORD: ${EMAIL_HOST_PASSWORD:-}
|
||||||
|
depends_on:
|
||||||
|
db:
|
||||||
|
condition: service_healthy
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
mysql_data:
|
||||||
|
static_volume:
|
||||||
|
media_volume:
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
set -e
|
||||||
|
|
||||||
|
python manage.py migrate --noinput
|
||||||
|
|
||||||
|
exec "$@"
|
||||||
Reference in new issue
Block a user