Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
147 commits
Select commit Hold shift + click to select a range
868c89f
42268 feat(backend:file_access): add file access permission verificat…
EBirkenfeld Oct 9, 2025
9635ac3
41526 feat(file_service): implement file proxy microservice with GCS …
EBirkenfeld Oct 13, 2025
f985da3
Merge remote-tracking branch 'origin/master' into 41526__сreate_file_…
EBirkenfeld Oct 24, 2025
89d257a
41526 fix(storage): rename file_service to storage
EBirkenfeld Oct 24, 2025
3009ff1
Merge remote-tracking branch 'origin/42268__add_api_for_verifying_fil…
EBirkenfeld Oct 24, 2025
26c7a5a
41526 feat(attachments): add API for checking file access permissions…
EBirkenfeld Oct 24, 2025
a57dd9f
41526 refactor(storage): migrate linting configuration from pyproject…
EBirkenfeld Oct 28, 2025
5cfa0f6
41526 refactor(backend): apply code formatting fixes across entire co…
EBirkenfeld Oct 28, 2025
98e5cf5
41526 refactor(storage): standardize docstrings and remove unused ign…
EBirkenfeld Oct 28, 2025
847543c
41526 refactor(storage:tests): update test imports and exception hand…
EBirkenfeld Oct 28, 2025
a9c7163
41526 refactor(storage:tests): standardize docstrings and update ruff…
EBirkenfeld Oct 28, 2025
ed410e8
41526 refactor(storage): improve authentication middleware and stream…
EBirkenfeld Oct 28, 2025
0fb60c8
41526 refactor(storage): clean up error codes and enhance validation …
EBirkenfeld Oct 29, 2025
1b733f4
Merge remote-tracking branch 'origin/master' into 41526__create_file_…
EBirkenfeld Dec 25, 2025
3472433
41526 feat(migrations): add access_type and file_id fields to FileAtt…
EBirkenfeld Dec 25, 2025
93f6bac
41526 feat(file-service): add file service and PostgreSQL support wit…
EBirkenfeld Dec 29, 2025
ca7dbb7
41526 fix(docker): update pneumatic_file_service port mapping from 80…
EBirkenfeld Dec 29, 2025
8ec1a8f
41526 fix(docker): update AUTH_REDIS_URL to use 'redis' service hostn…
EBirkenfeld Dec 29, 2025
a2ba8f8
41526 fix(docker): replace dynamic profile variable with static 'loca…
EBirkenfeld Dec 29, 2025
f48202c
41526 fix(docker): update port configurations and add backend service…
EBirkenfeld Dec 30, 2025
57864b2
41526 feat(storage): implement file service integration with attachme…
EBirkenfeld Dec 30, 2025
b561685
41526 feat(storage): add pytest configuration and tests for attachmen…
EBirkenfeld Dec 30, 2025
a040982
41526 fix(storage): filter out deleted attachments in attachment serv…
EBirkenfeld Dec 30, 2025
e02fe92
41526 feat(storage): implement attachment synchronization and update …
EBirkenfeld Jan 16, 2026
a9c84fb
41526 refactor(backend, storage): remove legacy file attachment endpo…
EBirkenfeld Jan 23, 2026
5f48271
41526 feat(storage): remove execute() method and optimize owner permi…
EBirkenfeld Jan 23, 2026
73f4b50
41526 refactor(tests): update download use case mocks for improved cl…
EBirkenfeld Jan 23, 2026
cd1bbde
41526 feat(backend, docker): update permissions and service configura…
EBirkenfeld Jan 24, 2026
4c33ead
41526 feat(storage): update initial migration for Attachment model
EBirkenfeld Jan 26, 2026
51eb7b5
41526 feat(storage): refactor attachment handling and implement new s…
EBirkenfeld Jan 26, 2026
95b4806
41526 refactor(storage): streamline attachment handling and update re…
EBirkenfeld Jan 29, 2026
84b71bb
41526 feat(storage): enhance attachment handling and integrate new fi…
EBirkenfeld Feb 3, 2026
9af4e48
41526 fix(storage): enhance permission checks and attachment handling
EBirkenfeld Feb 3, 2026
bd458a2
41526 refactor(storage): update attachment handling and optimize queries
EBirkenfeld Feb 5, 2026
fa36ca3
41526 refactor(storage): remove Google Cloud Storage integration and …
EBirkenfeld Feb 6, 2026
bfe81f7
41526 feat(storage): integrate file service and update configurations
EBirkenfeld Feb 9, 2026
ad6848b
41526 refactor(storage): update attachment handling and improve test …
EBirkenfeld Feb 10, 2026
9e2c448
41526 refactor(storage): remove FileSyncViewSet and update synchroniz…
EBirkenfeld Feb 10, 2026
52c0eb8
41526 refactor(storage): update file service configuration and attach…
EBirkenfeld Feb 10, 2026
5d8854d
41526 feat(authentication): enhance user photo handling and integrate…
EBirkenfeld Feb 10, 2026
7d9ab44
41526 refactor(storage): streamline user model retrieval in Attachmen…
EBirkenfeld Feb 10, 2026
1f90ca3
41526 feat(storage): update attachment routing and remove redundant s…
EBirkenfeld Feb 10, 2026
73f6a7e
41526 refactor(migrations): remove FileAttachmentPermission model and…
EBirkenfeld Feb 10, 2026
fa2661e
41526 refactor(file_service): improve file upload handling and valida…
EBirkenfeld Feb 11, 2026
1ba656e
41526 refactor(authentication): streamline user photo retrieval in Mi…
EBirkenfeld Feb 11, 2026
d2ac514
41526 fix(attachments): address code review issues
EBirkenfeld Feb 11, 2026
bf81633
Merge branch 'master' into 41526__create_file_service
EBirkenfeld Feb 11, 2026
3b0eb21
41526 feat(attachments): add URL field to attachment serializer and i…
EBirkenfeld Feb 12, 2026
10274ed
41526 feat(storage): implement optimized attachment retrieval with ne…
EBirkenfeld Feb 12, 2026
6bbeafa
41526 feat(docker): enable storage services and update configurations
EBirkenfeld Feb 12, 2026
0969cd9
41526 feat(attachments): enhance attachment handling and validation a…
EBirkenfeld Feb 13, 2026
270c63c
41526 fix(docker): Update FILE_SERVICE_URL in docker-compose files to…
EBirkenfeld Feb 13, 2026
a8c21b3
41526 refactor(comments): streamline comment handling by removing att…
EBirkenfeld Feb 13, 2026
3d32d88
41526 feat(storage): add plain URL extraction for file service
EBirkenfeld Feb 13, 2026
dfec943
41526 feat(permissions): implement reassigning of restricted permissi…
EBirkenfeld Feb 13, 2026
43b353c
41526 feat(public_auth): implement token invalidation for public temp…
EBirkenfeld Feb 13, 2026
280c068
41526 fix(storage): preserve comment attachments when refreshing task…
EBirkenfeld Feb 13, 2026
848c6a7
41526 refactor(tasks): optimize attachment handling with transaction …
EBirkenfeld Feb 16, 2026
153adac
41526 feat(attachments): implement pagination and filtering for attac…
EBirkenfeld Feb 16, 2026
42831dd
41526 refactor(docker): standardize file-service configurations and u…
EBirkenfeld Feb 16, 2026
673b3ac
41526 fix(database): update alembic.ini script location to use relati…
EBirkenfeld Feb 16, 2026
d6f0686
41526 refactor(tasks): update TaskFieldService to handle full URLs fo…
EBirkenfeld Feb 17, 2026
6889daf
41526 fix(comments): enforce mandatory comment text in CommentCreateS…
EBirkenfeld Feb 17, 2026
b78924b
41526 refactor(docker): standardize environment variable syntax in do…
EBirkenfeld Feb 17, 2026
fad0507
41526 refactor(attachments): streamline permission assignment and rem…
EBirkenfeld Feb 17, 2026
539446d
41526 fix(attachments): ensure guardian permissions are cleared on at…
EBirkenfeld Feb 17, 2026
05071ff
41526 refactor(attachments): update refresh_attachments_for_event to …
EBirkenfeld Feb 17, 2026
4eb446b
41526 refactor(settings): remove STORAGE configuration and docker-com…
EBirkenfeld Feb 17, 2026
2de8b2e
41526 refactor(docker): remove local-storage profiles from seaweedfs …
EBirkenfeld Feb 17, 2026
2b9dd71
41526 feat(API): Implement uploadFileToFileService for POST /upload
Maria-Lordwill Feb 18, 2026
93557ff
Merge branch '41526__create_file_service' of github.com:pneumaticapp/…
Maria-Lordwill Feb 18, 2026
672e522
Merge branch 'master' into 41526__create_file_service
EBirkenfeld Feb 18, 2026
47e9b41
41526 fix(docker): Update ALLOWED_ORIGINS in docker-compose files
EBirkenfeld Feb 18, 2026
a12df90
41526 feat(upload): Switch all attachment upload calls to the new fun…
Maria-Lordwill Feb 19, 2026
1ffc20c
41526 feat(attachments): Add kickoff description handling for workflo…
EBirkenfeld Feb 19, 2026
b9f359a
41526 refactor(fileservice): change file name
Maria-Lordwill Feb 20, 2026
6dd89ef
Merge branch '41526__create_file_service' of https://github.com/pneum…
EBirkenfeld Feb 24, 2026
da63083
41526 feat(authentication): Enhance photo update process to sync acco…
EBirkenfeld Feb 24, 2026
c4ea917
41526 refactor(forms, admin): Simplify exception handling by removing…
EBirkenfeld Feb 24, 2026
7068a7c
41526 fix(docker, authentication): Correct ALLOWED_ORIGINS, improve u…
EBirkenfeld Feb 24, 2026
3423399
41526 refactor(account): Optimize logo sync logic by preventing unnec…
EBirkenfeld Feb 24, 2026
af43724
41526 refactor(tasks): Wrap attachment retrieval in a transaction to …
EBirkenfeld Feb 24, 2026
c13c36a
Merge branch 'master' into 41526__create_file_service
EBirkenfeld Mar 11, 2026
f087c3f
41526 fix(tests): fix migration and tests
EBirkenfeld Mar 11, 2026
2c5f970
41526 feat(attachments): Implement a new file storage service with a …
EBirkenfeld Mar 12, 2026
17b0664
41526 fix(attachment): fix user update and attachment management serv…
EBirkenfeld Mar 12, 2026
2b43acf
41526 fix(attachment): fix Microsoft authentication service with Grap…
EBirkenfeld Mar 12, 2026
316d0b8
Merge branch 'master' into feature/file-storage-service
EBirkenfeld May 26, 2026
3dfa00f
41526 feat(storage): migrate file service to path-based routing and h…
EBirkenfeld May 27, 2026
dbcf7dd
41526 refactor(frontend): remove comment attachments from API, fix te…
EBirkenfeld May 28, 2026
36398e7
41526 fix(file-service): improve sync reliability and test coverage
EBirkenfeld May 29, 2026
4a2aeb2
41526 fix(storage): block pickle deserialization RCE
EBirkenfeld May 29, 2026
7e664a2
41526 feat(storage): harden security, improve performance, and expand…
EBirkenfeld May 29, 2026
76fe782
41526 refactor(storage): rewrite unit tests
EBirkenfeld May 29, 2026
76e1e3c
41526 refactor(tests): enforce unit-test and code review standards
EBirkenfeld May 29, 2026
afb4945
41526 fix(core): address code review issues across accounts, processe…
EBirkenfeld May 29, 2026
65e21ed
41526 chore(repo): unify pre-commit configs, fix linter errors, and p…
EBirkenfeld May 30, 2026
21b5545
41526 fix(storage): fix db connection leak and range header handling
EBirkenfeld May 30, 2026
69273e4
41526 fix(storage): resolve code review comments and resource leaks
EBirkenfeld May 30, 2026
f6b1bb9
41526 fix(accounts): reset user photo on upload failure and fix linti…
EBirkenfeld May 30, 2026
7b19706
merge: resolve conflicts from master merge
EBirkenfeld Jun 2, 2026
99ec169
41526 fix(nginx): add file-service upstream and server block to ssl_f…
EBirkenfeld Jun 2, 2026
241e272
41526 fix(storage): harden security and clean architecture violations
EBirkenfeld Jun 2, 2026
4ff9608
41526 refactor(infra): migrate file service to subpath routing and st…
EBirkenfeld Jun 3, 2026
5d6c9dc
Merge branch 'master' into 41526__create_file_service
EBirkenfeld Jun 4, 2026
69e9f70
41526 docs(config): add File Service env vars to default.env
EBirkenfeld Jun 4, 2026
f6dab7a
41526 refactor(files): replace attachment IDs with markdown links, re…
EBirkenfeld Jun 4, 2026
e94ca02
41526 fix(file-service): address review findings across security, per…
EBirkenfeld Jun 6, 2026
7f92bc1
41526 feat(file-migration): add guardian permissions and comprehensiv…
EBirkenfeld Jun 6, 2026
9d26471
41526 fix(file-service): harden CORS, infrastructure, and error handling
EBirkenfeld Jun 8, 2026
b69479e
41526 fix(auth): allow public/embed token auth in file service
EBirkenfeld Jun 8, 2026
76c6e9f
41526 fix(storage): cookie auth mismatch, debug mode bug, review cleanup
EBirkenfeld Jun 8, 2026
e8ee4b2
41526 fix(error-handling): unify File Service error mapping across fr…
EBirkenfeld Jun 8, 2026
9e9569c
41526 fix(error-handling): unify File Service error mapping across fr…
EBirkenfeld Jun 8, 2026
7b3cf32
Merge branch '41526__create_file_service' of https://github.com/pneum…
EBirkenfeld Jun 8, 2026
34ccf8b
41526 fix(storage): sync file permissions on performer changes
EBirkenfeld Jun 9, 2026
72553ad
41526 fix(storage): handle non-ASCII file_id in URLs and regex extrac…
EBirkenfeld Jun 9, 2026
8d60fb5
41526 fix(storage): handle non-ASCII file_id in URLs and regex extrac…
EBirkenfeld Jun 9, 2026
3bbbe9d
Merge branch '41526__create_file_service' of https://github.com/pneum…
EBirkenfeld Jun 9, 2026
85d9feb
41526 feat(storage): redirect browser to login on unauthenticated fil…
EBirkenfeld Jun 9, 2026
ba71c0d
41526 fix(storage): sort URL mapping by key length and fix file servi…
EBirkenfeld Jun 9, 2026
6a5c2b4
41526 fix(workflows): remove invalid prefetch causing 500 on workflow…
EBirkenfeld Jun 10, 2026
c487fdd
41526 feat(nginx): add Railway-specific nginx reverse proxy config
EBirkenfeld Jun 10, 2026
496b910
41526 feat(nginx): add Railway-specific reverse proxy config
EBirkenfeld Jun 10, 2026
5ece484
Merge branch '41526__create_file_service' of https://github.com/pneum…
EBirkenfeld Jun 10, 2026
c03d06f
Merge branch '41526__create_file_service' of https://github.com/pneum…
EBirkenfeld Jun 10, 2026
7fcad0b
Merge branch '41526__create_file_service' of https://github.com/pneum…
EBirkenfeld Jun 10, 2026
5085be1
41526 refactor(storage): remove legacy STORAGE feature flag and env vars
EBirkenfeld Jun 11, 2026
fb3f7ea
41526 fix(infra): extract file-service proxy, replace named volumes w…
EBirkenfeld Jun 12, 2026
a924194
41526 feat(storage): add public template support for file access perm…
EBirkenfeld Jun 13, 2026
bd86f4d
41526 chore(file-service): harden docker config and clean up service …
EBirkenfeld Jun 14, 2026
281631e
Merge branch 'master' into 41526__create_file_service
EBirkenfeld Jun 15, 2026
7a498d4
41526 fix(migrations): resolve conflicting migration numbering after …
EBirkenfeld Jun 15, 2026
67a9f3d
41526 refactor(storage): replace flat config with class-based setting…
EBirkenfeld Jun 15, 2026
fbf18a8
41526 fix(frontend): restore image preview for file attachments
EBirkenfeld Jun 15, 2026
5453770
41526 refactor(storage): migrate attachment model to scoped uniqueness
EBirkenfeld Jun 16, 2026
340324c
41526 fix(workflow-log): restore Attachments tab after file-service m…
EBirkenfeld Jun 16, 2026
30c69a9
Merge remote-tracking branch 'origin/master' into 41526__create_file_…
EBirkenfeld Jun 16, 2026
53c7500
41526 fix(storage): update CSP test assertion
EBirkenfeld Jun 16, 2026
7d3d6d5
41526 fix(nginx): increase client_max_body_size to prevent network er…
EBirkenfeld Jun 21, 2026
ce42e6f
41526 fix(storage): prevent redundant Set-Cookie on every response
EBirkenfeld Jun 21, 2026
5f9d1c1
41526 fix(storage): resolve migration constraints and standardize sta…
EBirkenfeld Jun 23, 2026
e785057
41526 fix(storage): prevent RuntimeError on streaming download failures
EBirkenfeld Jun 23, 2026
afcaf43
Merge remote-tracking branch 'origin/master' into 41526__create_file_…
EBirkenfeld Jun 23, 2026
359fb6d
41526 fix(start): auto-generate file-service credentials on first setup
EBirkenfeld Jun 23, 2026
c996841
41526 fix(start): auto-generate file-service credentials on first setup
EBirkenfeld Jun 23, 2026
b6446f4
Merge branch '41526__create_file_service' of https://github.com/pneum…
EBirkenfeld Jun 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
6 changes: 3 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
postgres
redis
rabbitmq
file-postgres
seaweedfs
nginx/logs
nginx/keys
nginx/config/nginx.conf
Expand All @@ -15,10 +17,8 @@ frontend/test-results

.vscode/
.cursor/
.cursorrules
.cursorrules/
.agents/
.agent/
.agents/
.antigravity/


50 changes: 50 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
default_stages: [commit]
default_language_version:
python: python3.7
repos:
- repo: local
hooks:
# --- BACKEND HOOKS ---
- id: ruff-backend
name: ruff check (backend)
types: [python]
language: system
entry: ruff check --config backend/ruff.toml
files: ^backend/
exclude: 'migrations|settings\.py|messages\.py|wsgi\.py|asgi\.py'

- id: py_codestyle-backend
name: py_codestyle (backend)
types: [python]
language: system
entry: pycodestyle --config backend/pycodestyle.ini
files: ^backend/
exclude: 'migrations|settings\.py|messages\.py|wsgi\.py|asgi\.py'
Comment thread
macroscopeapp[bot] marked this conversation as resolved.
Comment thread
macroscopeapp[bot] marked this conversation as resolved.

# --- STORAGE HOOKS ---
- id: ruff-check-storage
name: ruff check (storage)
entry: ruff check --config storage/ruff.toml --no-cache
language: system
types: [python]
files: ^storage/
require_serial: true
exclude: 'alembic|migrations'

- id: ruff-format-storage
name: ruff format (storage)
entry: ruff format --config storage/ruff.toml --no-cache
language: system
types: [python]
files: ^storage/
require_serial: true
exclude: 'alembic|migrations'

- id: mypy-check-storage
name: mypy (storage)
entry: mypy --config-file storage/mypy.ini storage/src/
language: system
types: [python]
files: ^storage/
pass_filenames: false
exclude: 'alembic|migrations'
23 changes: 0 additions & 23 deletions backend/.pre-commit-config.yaml

This file was deleted.

File renamed without changes.
182 changes: 174 additions & 8 deletions backend/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -138,10 +138,6 @@ services:
PUSH: ${PUSH:-no}
PUSH_PROVIDER: ${PUSH_PROVIDER:-}
FIREBASE_PUSH_APPLICATION_CREDENTIALS: ${FIREBASE_PUSH_APPLICATION_CREDENTIALS:-/pneumatic_backend/firebase-push.json}
STORAGE: ${STORAGE:-no}
STORAGE_PROVIDER: ${STORAGE_PROVIDER:-}
GCLOUD_BUCKET_NAME: ${GCLOUD_BUCKET_NAME:-pneumatic}
GOOGLE_APPLICATION_CREDENTIALS: ${GOOGLE_APPLICATION_CREDENTIALS:-/pneumatic_backend/google_api_credentials.json}
SENTRY_DSN: ${SENTRY_DSN:-}
POSTGRES_HOST: ${POSTGRES_HOST:-postgres}
POSTGRES_USER: ${POSTGRES_USER:-postgres_user}
Expand Down Expand Up @@ -253,10 +249,6 @@ services:
PUSH: ${PUSH:-no}
PUSH_PROVIDER: ${PUSH_PROVIDER:-}
FIREBASE_PUSH_APPLICATION_CREDENTIALS: ${FIREBASE_PUSH_APPLICATION_CREDENTIALS:-/pneumatic_backend/firebase-push.json}
STORAGE: ${STORAGE:-no}
STORAGE_PROVIDER: ${STORAGE_PROVIDER:-}
GCLOUD_BUCKET_NAME: ${GCLOUD_BUCKET_NAME:-pneumatic}
GOOGLE_APPLICATION_CREDENTIALS: ${GOOGLE_APPLICATION_CREDENTIALS:-/pneumatic_backend/google_api_credentials.json}
SENTRY_DSN: ${SENTRY_DSN:-}
POSTGRES_HOST: ${POSTGRES_HOST:-postgres}
POSTGRES_USER: ${POSTGRES_USER:-postgres_user}
Expand Down Expand Up @@ -292,6 +284,180 @@ services:
- pneumatic
restart: always

backend:
build:
context: .
container_name: pneumatic-backend
command: >
sh -c "python manage.py migrate &&
python manage.py collectstatic --no-input &&
python manage.py compilemessages &&
python manage.py runserver 0.0.0.0:8000"
environment:
BACKEND_URL: ${BACKEND_URL:-http://localhost:8001}
FRONTEND_URL: ${FRONTEND_URL:-http://localhost}
FORMS_URL: ${FORMS_URL:-http://localhost/forms}
ENVIRONMENT: ${ENVIRONMENT:-Development}
LANGUAGE_CODE: ${LANGUAGE_CODE:-en}
CAPTCHA: ${CAPTCHA:-no}
ANALYTICS: ${ANALYTICS:-no}
BILLING: ${BILLING:-no}
SIGNUP: ${SIGNUP:-yes}
MS_AUTH: ${MS_AUTH:-no}
GOOGLE_AUTH: ${GOOGLE_AUTH:-no}
SSO_AUTH: ${SSO_AUTH:-no}
EMAIL: ${EMAIL:-no}
AI: ${AI:-no}
PUSH: ${PUSH:-no}
POSTGRES_HOST: ${POSTGRES_HOST:-postgres}
POSTGRES_USER: ${POSTGRES_USER:-postgres_user}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-postgres_password}
POSTGRES_DB: ${POSTGRES_DB:-postgres_db}
DJANGO_DEBUG: ${DJANGO_DEBUG:-yes}
ADMIN_PATH: ${ADMIN_PATH:-admin}
DJANGO_SECRET_KEY: ${DJANGO_SECRET_KEY:-django_secret_django_secret_django_secret}
DJANGO_SETTINGS_MODULE: src.settings
AUTH_REDIS_URL: "redis://:${REDIS_PASSWORD:-redis_password}@redis:6379/1"
CACHE_REDIS_URL: "redis://:${REDIS_PASSWORD:-redis_password}@redis:6379/0"
CHANNELS_REDIS_URL: "redis://:${REDIS_PASSWORD:-redis_password}@redis:6379/2"
SESSION_REDIS_URL: "redis://:${REDIS_PASSWORD:-redis_password}@redis:6379/3"
CELERY_BROKER_URL: "amqp://${RABBITMQ_USER:-rabbitmq_user}:${RABBITMQ_PASSWORD:-rabbitmq_password}@rabbitmq:5672"
ALLOWED_HOSTS: "backend localhost 127.0.0.1"
VERIFICATION_CHECK: no
CORS_ORIGIN_ALLOW_ALL: yes
CORS_ALLOW_CREDENTIALS: yes
FILE_SERVICE_URL: ${FILE_SERVICE_URL:-http://file-service:8000}
CORS_ORIGIN_WHITELIST: "http://localhost:8000 http://localhost:8002 ${FRONTEND_URL:-http://localhost}"
ENABLE_LOGGING: ${ENABLE_LOGGING:-yes}
volumes:
- ./:/pneumatic_backend
ports:
- "8001:8000"
depends_on:
- postgres
- rabbitmq
- redis
networks:
- pneumatic
restart: always

file-service:
build:
context: ../storage
container_name: pneumatic-file-service
environment:
DEBUG: ${FILE_DEBUG:-true}
CONFIG: ${FILE_CONFIG:-Development}
WORKERS: ${FILE_WORKERS:-1}
PORT: ${FILE_PORT:-8000}
FRONTEND_URL: ${FRONTEND_URL:-http://localhost}
FORMS_URL: ${FORMS_URL:-http://localhost/forms}
BACKEND_PRIVATE_URL: http://backend:8000/
POSTGRES_USER: ${FILE_POSTGRES_USER:-pneumatic}
POSTGRES_PASSWORD: ${FILE_POSTGRES_PASSWORD:-pneumatic}
POSTGRES_DB: ${FILE_POSTGRES_DB:-pneumatic}
POSTGRES_HOST: ${FILE_POSTGRES_HOST:-file-postgres}
POSTGRES_PORT: ${FILE_POSTGRES_PORT:-5432}
STORAGE_TYPE: ${FILE_STORAGE_TYPE:-local}
SEAWEEDFS_S3_ENDPOINT: ${FILE_SEAWEEDFS_S3_ENDPOINT:-http://seaweedfs-filer:8333}
SEAWEEDFS_S3_ACCESS_KEY: ${FILE_SEAWEEDFS_S3_ACCESS_KEY:-any-secret-key-will-work}
SEAWEEDFS_S3_SECRET_KEY: ${FILE_SEAWEEDFS_S3_SECRET_KEY:-any-secret-key-will-work}
SEAWEEDFS_S3_REGION: ${FILE_SEAWEEDFS_S3_REGION:-us-central1}
SEAWEEDFS_S3_USE_SSL: ${FILE_SEAWEEDFS_S3_USE_SSL:-false}
GCS_S3_ENDPOINT: ${FILE_GCS_S3_ENDPOINT:-}
GCS_S3_ACCESS_KEY: ${FILE_GCS_S3_ACCESS_KEY:-}
GCS_S3_SECRET_KEY: ${FILE_GCS_S3_SECRET_KEY:-}
GCS_S3_REGION: ${FILE_GCS_S3_REGION:-}
FASTAPI_BASE_URL: ${FILE_FASTAPI_BASE_URL:-http://localhost:8002}
Comment thread
EBirkenfeld marked this conversation as resolved.
BUCKET_PREFIX: ${FILE_BUCKET_PREFIX:-pneumatic-dev-test}
MAX_FILE_SIZE: ${FILE_MAX_FILE_SIZE:-104857600}
CHUNK_SIZE: ${FILE_CHUNK_SIZE:-1048576}
AUTH_REDIS_URL: "redis://:${REDIS_PASSWORD:-redis_password}@redis:6379/1"
KEY_PREFIX_REDIS: ${FILE_KEY_PREFIX_REDIS:-:1:}
DJANGO_SECRET_KEY: ${DJANGO_SECRET_KEY:-django_secret_django_secret_django_secret}
AUTH_TOKEN_ITERATIONS: ${FILE_AUTH_TOKEN_ITERATIONS:-1}
ports:
- "8002:8000"
depends_on:
- file-postgres
- redis
- backend
Comment thread
EBirkenfeld marked this conversation as resolved.
networks:
- pneumatic
restart: always

file-postgres:
image: postgres:15-bookworm
container_name: pneumatic-file-postgres
environment:
POSTGRES_DB: ${FILE_POSTGRES_DB:-pneumatic}
POSTGRES_USER: ${FILE_POSTGRES_USER:-pneumatic}
POSTGRES_PASSWORD: ${FILE_POSTGRES_PASSWORD:-pneumatic}
ports:
- "5433:5432"
volumes:
- ../file-postgres/data:/var/lib/postgresql/data:rw
networks:
- pneumatic
restart: always

seaweedfs-master:
image: chrislusf/seaweedfs:3.95
container_name: pneumatic-seaweedfs-master
command: master -ip=seaweedfs-master -port=9333
ports:
- "9333:9333"
- "19333:19333"
volumes:
- ../seaweedfs/master/data:/data:rw
networks:
- pneumatic

seaweedfs-volume:
image: chrislusf/seaweedfs:3.95
container_name: pneumatic-seaweedfs-volume
command:
- volume
- -mserver=seaweedfs-master:9333
- -port=8080
- -ip=seaweedfs-volume
- -publicUrl=localhost:8080
ports:
- "8080:8080"
- "18080:18080"
depends_on:
- seaweedfs-master
volumes:
- ../seaweedfs/volume/data:/data:rw
networks:
- pneumatic

seaweedfs-filer:
image: chrislusf/seaweedfs:3.95
container_name: pneumatic-seaweedfs-filer
command: filer -master="seaweedfs-master:9333" -s3 -s3.port=8333
ports:
# TODO(production): REMOVE — exposes unauthenticated Filer UI to the internet
- "8888:8888" # DEV ONLY
- "8333:8333"
- "18888:18888"
depends_on:
- seaweedfs-master
- seaweedfs-volume
volumes:
- ../storage/seaweedfs/filer.toml:/etc/seaweedfs/filer.toml
- ../seaweedfs/filer/data:/data:rw
networks:
- pneumatic

networks:
pneumatic:

volumes:
postgres_data:
postgres_backups:
redis_data:
rabbitmq_data:
rabbitmq_log:


Loading