Spaces:
Building
Building
File size: 3,131 Bytes
63441fa f51985d 63441fa f51985d 63441fa f51985d 63441fa f51985d 63441fa f51985d 63441fa f51985d 63441fa f51985d 63441fa f51985d 63441fa f51985d 63441fa f51985d 63441fa f51985d 63441fa f51985d 63441fa f51985d 63441fa f51985d 63441fa f51985d 63441fa f51985d 63441fa f51985d 63441fa |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
FROM registry.gitlab.com/scripta/escriptorium:latest
WORKDIR /usr/src/app
# Install required packages
RUN apt-get update && apt-get install -y git postgresql postgresql-client redis-server supervisor && \
rm -rf /var/lib/apt/lists/* && \
git clone https://gitlab.com/scripta/escriptorium.git /tmp/escriptorium && \
cp /tmp/escriptorium/variables.env_example variables.env && \
rm -rf /tmp/escriptorium
# Configure PostgreSQL
RUN echo "host all all 0.0.0.0/0 md5" >> /etc/postgresql/13/main/pg_hba.conf && \
echo "listen_addresses='*'" >> /etc/postgresql/13/main/postgresql.conf
# Create supervisord configuration
RUN echo '[supervisord]\n\
nodaemon=true\n\
logfile=/var/log/supervisord.log\n\
logfile_maxbytes=50MB\n\
logfile_backups=10\n\
\n\
[program:postgresql]\n\
command=service postgresql start\n\
autostart=true\n\
autorestart=true\n\
\n\
[program:redis]\n\
command=service redis-server start\n\
autostart=true\n\
autorestart=true\n\
\n\
[program:uwsgi]\n\
command=uwsgi --ini /usr/src/app/uwsgi.ini\n\
directory=/usr/src/app\n\
autostart=true\n\
autorestart=true\n\
stdout_logfile=/var/log/uwsgi.log\n\
stderr_logfile=/var/log/uwsgi.err\n\
\n\
[program:daphne]\n\
command=daphne --bind 0.0.0.0 --port 5000 -v 1 escriptorium.asgi:application\n\
directory=/usr/src/app\n\
autostart=true\n\
autorestart=true\n\
stdout_logfile=/var/log/daphne.log\n\
stderr_logfile=/var/log/daphne.err\n\
\n\
[program:celery_default]\n\
command=celery -A escriptorium worker -l INFO -E -Ofair --prefetch-multiplier 1 -Q default -c 4 --max-tasks-per-child=10\n\
directory=/usr/src/app\n\
autostart=true\n\
autorestart=true\n\
\n\
[program:celery_live]\n\
command=celery -A escriptorium worker -l INFO -E -Ofair --prefetch-multiplier 1 -Q live -c 4 --max-tasks-per-child=10\n\
directory=/usr/src/app\n\
autostart=true\n\
autorestart=true\n\
\n\
[program:celery_low_priority]\n\
command=celery -A escriptorium worker -l INFO -E -Ofair --prefetch-multiplier 1 -Q low-priority -c 4 --max-tasks-per-child=10\n\
directory=/usr/src/app\n\
autostart=true\n\
autorestart=true\n\
\n\
[program:celery_gpu]\n\
command=celery -A escriptorium worker -l INFO -E -Ofair --prefetch-multiplier 1 -Q gpu -c 1 --max-tasks-per-child=1\n\
directory=/usr/src/app\n\
autostart=true\n\
autorestart=true\n\
' > /etc/supervisor/conf.d/escriptorium.conf
# Create initialization script
RUN echo '#!/bin/bash\n\
# Initialize database if needed\n\
if [ ! -f "/usr/src/app/.db_initialized" ]; then\n\
echo "Initializing database..."\n\
service postgresql start\n\
su - postgres -c "createuser -s root"\n\
su - postgres -c "createdb -O root escriptorium"\n\
python manage.py migrate\n\
python manage.py collectstatic --noinput\n\
touch /usr/src/app/.db_initialized\n\
fi\n\
\n\
# Start all services using supervisor\n\
exec supervisord -c /etc/supervisor/supervisord.conf\n\
' > /usr/src/app/start.sh && chmod +x /usr/src/app/start.sh
# Expose port 8080
EXPOSE 8080
# Define volumes for persistence
VOLUME ["/usr/src/app/static", "/usr/src/app/media", "/var/lib/postgresql/data"]
# Set the entrypoint
CMD ["/usr/src/app/start.sh"]
|