forked from ungleich-public/dynamicweb
configure docker, docker-compose
This commit is contained in:
parent
fc0a999f49
commit
1d1e942a65
4 changed files with 139 additions and 84 deletions
40
Dockerfile
40
Dockerfile
|
|
@ -1,32 +1,30 @@
|
|||
# FROM python:3.10.0-alpine3.15
|
||||
FROM python:3.14.2-alpine3.12
|
||||
FROM python:3.14.2-slim
|
||||
|
||||
WORKDIR /usr/src/app
|
||||
|
||||
RUN apk add --update --no-cache \
|
||||
ENV PYTHONDONTWRITEBYTECODE=1 \
|
||||
PYTHONUNBUFFERED=1 \
|
||||
PIP_NO_CACHE_DIR=1
|
||||
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
git \
|
||||
build-base \
|
||||
openldap-dev \
|
||||
python3-dev \
|
||||
postgresql-dev \
|
||||
jpeg-dev \
|
||||
build-essential \
|
||||
libldap2-dev \
|
||||
libsasl2-dev \
|
||||
libpq-dev \
|
||||
libjpeg-dev \
|
||||
zlib1g-dev \
|
||||
libxml2-dev \
|
||||
libxslt-dev \
|
||||
libxslt1-dev \
|
||||
libmemcached-dev \
|
||||
zlib-dev \
|
||||
&& rm -rf /var/cache/apk/*
|
||||
|
||||
## For alpine 3.15 replace postgresql-dev with libpq-dev
|
||||
|
||||
# FIX https://github.com/python-ldap/python-ldap/issues/432
|
||||
RUN echo 'INPUT ( libldap.so )' > /usr/lib/libldap_r.so
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
COPY requirements.txt ./
|
||||
|
||||
# Pillow seems to need LIBRARY_PATH set as follows: (see: https://github.com/python-pillow/Pillow/issues/1763#issuecomment-222383534)
|
||||
RUN LIBRARY_PATH=/lib:/usr/lib /bin/sh -c "pip install --no-cache-dir -r requirements.txt --no-deps"
|
||||
RUN LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:/usr/lib \
|
||||
pip install --no-cache-dir -r requirements.txt --no-deps
|
||||
|
||||
COPY ./ .
|
||||
COPY entrypoint.sh /
|
||||
COPY . .
|
||||
|
||||
ENTRYPOINT ["/entrypoint.sh" ]
|
||||
|
||||
CMD ["gunicorn", "--workers", "1", "--bind", "0.0.0.0:8000", "dynamicweb.wsgi:application"]
|
||||
22
deploy/nginx/deploy.conf
Normal file
22
deploy/nginx/deploy.conf
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
server {
|
||||
listen 80;
|
||||
|
||||
server_name 185.203.114.147;
|
||||
|
||||
location /static/ {
|
||||
alias /usr/src/app/staticfiles/;
|
||||
}
|
||||
|
||||
location /media/ {
|
||||
alias /usr/src/app/media/;
|
||||
}
|
||||
|
||||
location / {
|
||||
proxy_pass http://web:8000;
|
||||
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,95 +1,128 @@
|
|||
services:
|
||||
|
||||
db:
|
||||
image: postgres:16
|
||||
restart: unless-stopped
|
||||
|
||||
|
||||
env_file:
|
||||
- .env
|
||||
|
||||
environment:
|
||||
POSTGRES_DB: ${POSTGRES_DB}
|
||||
POSTGRES_USER: ${POSTGRES_USER}
|
||||
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
|
||||
|
||||
volumes:
|
||||
- postgres_data:/var/lib/postgresql/data
|
||||
|
||||
networks:
|
||||
- backend
|
||||
|
||||
healthcheck:
|
||||
test:
|
||||
[
|
||||
"CMD-SHELL",
|
||||
"pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"
|
||||
]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
|
||||
|
||||
web:
|
||||
build: .
|
||||
|
||||
|
||||
restart: unless-stopped
|
||||
|
||||
env_file:
|
||||
- .env
|
||||
|
||||
environment:
|
||||
POSTGRES_HOST: db
|
||||
POSTGRES_PORT: 5432
|
||||
|
||||
command: >
|
||||
gunicorn dynamicweb.wsgi:application
|
||||
--bind 0.0.0.0:8000
|
||||
--workers 3
|
||||
--access-logfile -
|
||||
--error-logfile -
|
||||
|
||||
volumes:
|
||||
- static_data:/app/staticfiles
|
||||
- media_data:/app/media
|
||||
|
||||
expose:
|
||||
- "8000"
|
||||
|
||||
depends_on:
|
||||
db:
|
||||
condition: service_healthy
|
||||
image: postgres:16
|
||||
restart: unless-stopped
|
||||
|
||||
networks:
|
||||
- backend
|
||||
env_file:
|
||||
- .env
|
||||
|
||||
environment:
|
||||
POSTGRES_DB: app
|
||||
POSTGRES_USER: postgres
|
||||
POSTGRES_HOST_AUTH_METHOD: trust
|
||||
|
||||
nginx:
|
||||
image: nginx:alpine
|
||||
volumes:
|
||||
- postgres_data:/var/lib/postgresql/data
|
||||
|
||||
healthcheck:
|
||||
test:
|
||||
[
|
||||
"CMD-SHELL",
|
||||
"pg_isready -U $${POSTGRES_USER} -d app"
|
||||
]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- backend
|
||||
|
||||
ports:
|
||||
- "80:80"
|
||||
redis:
|
||||
image: redis:7-alpine
|
||||
restart: unless-stopped
|
||||
|
||||
volumes:
|
||||
- redis_data:/data
|
||||
|
||||
command: redis-server --appendonly yes
|
||||
|
||||
networks:
|
||||
- backend
|
||||
|
||||
web:
|
||||
build:
|
||||
context: .
|
||||
|
||||
restart: unless-stopped
|
||||
|
||||
env_file:
|
||||
- .env
|
||||
|
||||
environment:
|
||||
POSTGRES_HOST: db
|
||||
POSTGRES_PORT: 5432
|
||||
POSTGRES_DB: app
|
||||
|
||||
CELERY_BROKER_URL: redis://redis:6379/0
|
||||
CELERY_RESULT_BACKEND: redis://redis:6379/1
|
||||
|
||||
volumes:
|
||||
- static_data:/usr/src/app/staticfiles
|
||||
- media_data:/usr/src/app/media
|
||||
|
||||
expose:
|
||||
- "8000"
|
||||
|
||||
depends_on:
|
||||
db:
|
||||
condition: service_healthy
|
||||
redis:
|
||||
condition: service_started
|
||||
|
||||
networks:
|
||||
- backend
|
||||
|
||||
celery:
|
||||
build:
|
||||
context: .
|
||||
|
||||
restart: unless-stopped
|
||||
|
||||
env_file:
|
||||
- .env
|
||||
|
||||
environment:
|
||||
POSTGRES_HOST: db
|
||||
POSTGRES_PORT: 5432
|
||||
POSTGRES_DB: app
|
||||
|
||||
CELERY_BROKER_URL: redis://redis:6379/0
|
||||
CELERY_RESULT_BACKEND: redis://redis:6379/1
|
||||
|
||||
command: celery -A dynamicweb worker --loglevel=info
|
||||
|
||||
depends_on:
|
||||
db:
|
||||
condition: service_healthy
|
||||
redis:
|
||||
condition: service_started
|
||||
|
||||
networks:
|
||||
- backend
|
||||
|
||||
nginx:
|
||||
image: nginx:latest
|
||||
restart: unless-stopped
|
||||
|
||||
ports:
|
||||
- "80:80"
|
||||
|
||||
volumes:
|
||||
- ./deploy/nginx/default.conf:/etc/nginx/conf.d/default.conf:ro
|
||||
- static_data:/usr/src/app/staticfiles:ro
|
||||
- media_data:/usr/src/app/media:ro
|
||||
|
||||
depends_on:
|
||||
- web
|
||||
|
||||
networks:
|
||||
- backend
|
||||
|
||||
volumes:
|
||||
- ./deploy/nginx/default.conf:/etc/nginx/conf.d/default.conf:ro
|
||||
- static_data:/app/staticfiles:ro
|
||||
- media_data:/app/media:ro
|
||||
|
||||
depends_on:
|
||||
- web
|
||||
postgres_data:
|
||||
redis_data:
|
||||
static_data:
|
||||
media_data:
|
||||
|
||||
networks:
|
||||
- backend
|
||||
|
||||
|
||||
volumes:
|
||||
postgres_data:
|
||||
static_data:
|
||||
media_data:
|
||||
|
||||
networks:
|
||||
backend:
|
||||
backend:
|
||||
|
|
@ -259,6 +259,8 @@ DATABASES = {
|
|||
'default': {
|
||||
'ENGINE': 'django.db.backends.postgresql_psycopg2',
|
||||
'NAME': 'app',
|
||||
"USER": "postgres",
|
||||
"HOST": env("HOST"),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue