neoni-teal commited on
Commit
4117628
·
verified ·
1 Parent(s): 170d431

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +18 -43
Dockerfile CHANGED
@@ -1,65 +1,51 @@
1
- # Start with a base image
2
  FROM ubuntu:22.04
3
-
4
- # Set environment variables for non-interactive installs
5
  ENV DEBIAN_FRONTEND=noninteractive
6
 
7
- # Install core dependencies including git
8
  RUN apt-get update && \
9
  apt-get install -y --no-install-recommends \
10
- git python3 python3-pip python3-dev \
11
- imagemagick fonts-liberation gnupg \
12
- libpq-dev default-libmysqlclient-dev pkg-config \
13
- libmagic-dev libzbar0 poppler-utils \
14
- unpaper ghostscript icc-profiles-free qpdf liblept5 libxml2 \
15
- pngquant zlib1g tesseract-ocr tesseract-ocr-eng \
16
- build-essential python3-setuptools python3-wheel \
17
- redis-server postgresql postgresql-client \
18
- sudo nodejs npm supervisor nano curl && \
19
  rm -rf /var/lib/apt/lists/*
20
 
21
- # Install uv package installer
22
  RUN curl -sSf https://astral.sh/uv/install.sh | bash
23
 
24
- # Create user and directories for Paperless-ngx
25
  RUN adduser --system --home /opt/paperless --group paperless
26
  WORKDIR /opt/paperless
27
-
28
- # Mark working directory as safe for git
29
  RUN git config --global --add safe.directory /opt/paperless
30
 
31
- # Clone Paperless-ngx
32
  RUN git clone https://github.com/paperless-ngx/paperless-ngx.git . && \
33
  git checkout v2.17.1
34
 
35
- # Install frontend dependencies and build
36
- RUN npm install -g yarn && \
37
- cd src/paperless_frontend && \
38
- yarn install && \
39
- yarn build && \
40
- cd ../..
41
 
42
- # Install Python dependencies using uv
43
  RUN /root/.cargo/bin/uv pip install -r requirements.txt
44
 
45
- # Configure PostgreSQL (startup and init)
46
  RUN service postgresql start && \
47
  su - postgres -c "psql -c \"CREATE USER paperless WITH PASSWORD 'your_db_password';\"" && \
48
  su - postgres -c "psql -c \"CREATE DATABASE paperless OWNER paperless;\"" && \
49
  service postgresql stop
50
 
51
- # Create Paperless-ngx specific directories
52
  RUN mkdir -p media data consume export && \
53
  chown -R paperless:paperless media data consume export
54
 
55
- # Environment configuration
56
  ENV PAPERLESS_REDIS="redis://localhost:6379/0" \
57
  PAPERLESS_DBENGINE="postgresql" \
58
  PAPERLESS_DBHOST="localhost" \
59
  PAPERLESS_DBNAME="paperless" \
60
  PAPERLESS_DBUSER="paperless" \
61
  PAPERLESS_DBPASS="your_db_password" \
62
- PAPERLESS_SECRET_KEY="a_very_long_and_random_string_for_huggingface" \
63
  PAPERLESS_CONSUMPTION_DIR="/opt/paperless/consume" \
64
  PAPERLESS_DATA_DIR="/opt/paperless/data" \
65
  PAPERLESS_MEDIA_ROOT="/opt/paperless/media" \
@@ -70,27 +56,16 @@ ENV PAPERLESS_REDIS="redis://localhost:6379/0" \
70
  PAPERLESS_ENABLE_NLTK=false \
71
  PAPERLESS_OCR_CLEAN="none"
72
 
73
- # Create a basic supervisord config
74
- RUN echo "[supervisord]\nnodaemon=true\n\n\
75
  [program:postgresql]\ncommand=/usr/lib/postgresql/*/bin/postgres -D /var/lib/postgresql/*/main\nuser=postgres\n\n\
76
  [program:redis]\ncommand=/usr/bin/redis-server\n\n\
77
  [program:paperless-webserver]\ncommand=/opt/paperless/src/manage.py runserver 0.0.0.0:7860\nuser=paperless\n\n\
78
  [program:paperless-consumer]\ncommand=/opt/paperless/src/manage.py document_consumer\nuser=paperless\n\n\
79
- [program:paperless-scheduler]\ncommand=/opt/paperless/src/manage.py qcluster\nuser=paperless" > /etc/supervisor/conf.d/supervisord.conf
80
 
81
- # Add uv to PATH
82
  ENV PATH="/root/.cargo/bin:${PATH}"
83
 
84
- # Run initial migrations and create superuser during container startup
85
- RUN echo "#!/bin/bash\n\
86
- service postgresql start\n\
87
- service redis-server start\n\
88
- cd /opt/paperless\n\
89
- python3 src/manage.py migrate\n\
90
- python3 src/manage.py createsuperuser --noinput --username admin --email admin@example.com || true\n\
91
- exec /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf" > /startup.sh && \
92
- chmod +x /startup.sh
93
 
94
  EXPOSE 7860
95
-
96
  CMD ["/startup.sh"]
 
 
1
  FROM ubuntu:22.04
 
 
2
  ENV DEBIAN_FRONTEND=noninteractive
3
 
 
4
  RUN apt-get update && \
5
  apt-get install -y --no-install-recommends \
6
+ git python3 python3-pip python3-dev \
7
+ imagemagick fonts-liberation gnupg \
8
+ libpq-dev default-libmysqlclient-dev pkg-config \
9
+ libmagic-dev libzbar0 poppler-utils \
10
+ unpaper ghostscript icc-profiles-free qpdf liblept5 libxml2 \
11
+ pngquant zlib1g tesseract-ocr tesseract-ocr-eng \
12
+ build-essential python3-setuptools python3-wheel \
13
+ redis-server postgresql postgresql-client \
14
+ sudo nodejs npm supervisor nano curl && \
15
  rm -rf /var/lib/apt/lists/*
16
 
 
17
  RUN curl -sSf https://astral.sh/uv/install.sh | bash
18
 
 
19
  RUN adduser --system --home /opt/paperless --group paperless
20
  WORKDIR /opt/paperless
 
 
21
  RUN git config --global --add safe.directory /opt/paperless
22
 
 
23
  RUN git clone https://github.com/paperless-ngx/paperless-ngx.git . && \
24
  git checkout v2.17.1
25
 
26
+ # Build frontend (new structure uses src-ui/)
27
+ RUN cd src-ui && npm install && npm run build -- --configuration production
 
 
 
 
28
 
29
+ # Python dependencies
30
  RUN /root/.cargo/bin/uv pip install -r requirements.txt
31
 
32
+ # Initialize Postgres
33
  RUN service postgresql start && \
34
  su - postgres -c "psql -c \"CREATE USER paperless WITH PASSWORD 'your_db_password';\"" && \
35
  su - postgres -c "psql -c \"CREATE DATABASE paperless OWNER paperless;\"" && \
36
  service postgresql stop
37
 
38
+ # Paperless-specific directories
39
  RUN mkdir -p media data consume export && \
40
  chown -R paperless:paperless media data consume export
41
 
 
42
  ENV PAPERLESS_REDIS="redis://localhost:6379/0" \
43
  PAPERLESS_DBENGINE="postgresql" \
44
  PAPERLESS_DBHOST="localhost" \
45
  PAPERLESS_DBNAME="paperless" \
46
  PAPERLESS_DBUSER="paperless" \
47
  PAPERLESS_DBPASS="your_db_password" \
48
+ PAPERLESS_SECRET_KEY="a_very_long_random_string" \
49
  PAPERLESS_CONSUMPTION_DIR="/opt/paperless/consume" \
50
  PAPERLESS_DATA_DIR="/opt/paperless/data" \
51
  PAPERLESS_MEDIA_ROOT="/opt/paperless/media" \
 
56
  PAPERLESS_ENABLE_NLTK=false \
57
  PAPERLESS_OCR_CLEAN="none"
58
 
59
+ RUN printf "[supervisord]\nnodaemon=true\n\n\
 
60
  [program:postgresql]\ncommand=/usr/lib/postgresql/*/bin/postgres -D /var/lib/postgresql/*/main\nuser=postgres\n\n\
61
  [program:redis]\ncommand=/usr/bin/redis-server\n\n\
62
  [program:paperless-webserver]\ncommand=/opt/paperless/src/manage.py runserver 0.0.0.0:7860\nuser=paperless\n\n\
63
  [program:paperless-consumer]\ncommand=/opt/paperless/src/manage.py document_consumer\nuser=paperless\n\n\
64
+ [program:paperless-scheduler]\ncommand=/opt/paperless/src/manage.py qcluster\nuser=paperless\n" > /etc/supervisor/conf.d/supervisord.conf
65
 
 
66
  ENV PATH="/root/.cargo/bin:${PATH}"
67
 
68
+ RUN printf "#!/bin/bash\nservice postgresql start\nservice redis-server start\ncd /opt/paperless\npython3 src/manage.py migrate\npython3 src/manage.py createsuperuser --noinput --username admin --email admin@example.com || true\nexec /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf\n" > /startup.sh && chmod +x /startup.sh
 
 
 
 
 
 
 
 
69
 
70
  EXPOSE 7860
 
71
  CMD ["/startup.sh"]