forked from jlaunonen/kirppu
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
78 lines (78 loc) · 2.54 KB
/
Copy pathdocker-compose.yml
File metadata and controls
78 lines (78 loc) · 2.54 KB
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
# NOTE: This is only intended for development use.
name: kirppu
services:
frontend:
environment:
NODE_PATH: /usr/src/node_modules
build:
context: .
dockerfile_inline: |
FROM node:20-alpine
WORKDIR /usr/src
RUN addgroup -S -g 11111 build && adduser -S -u 11111 -G build build && \
mkdir node_modules build && \
chown build:build node_modules build
COPY --chown=build:build kirppu/package.json kirppu/package-lock.json ./
USER build
RUN --mount=type=cache,uid=11111,gid=11111,target=/home/build/.npm npm ci
COPY scripts/dev-frontend-entrypoint.sh ./
WORKDIR /usr/src/app/kirppu
ENTRYPOINT ["/usr/src/dev-frontend-entrypoint.sh"]
command: npm run -- gulp --dest /usr/src/build/kirppu --type debug default watch
volumes:
- .:/usr/src/app:ro
# Mounted outside app so that it can be initialized with proper access.
# Note, that this is mounted elsewhere in the web service.
- frontend:/usr/src/build
web:
build:
context: .
dockerfile_inline: |
FROM python:3.13
WORKDIR /usr/src
RUN groupadd -r kirppu && useradd -r -g kirppu kirppu
COPY requirements-production.txt requirements-dev.txt ./
RUN python -m venv venv
RUN --mount=type=cache,target=/root/.cache/pip venv/bin/pip install --require-hashes -r requirements-production.txt -r requirements-dev.txt
USER kirppu
WORKDIR /usr/src/app
EXPOSE 8000
command: /usr/src/venv/bin/python manage.py docker_start
ports:
- "${LISTEN_IP:-0.0.0.0}:8000:8000"
depends_on:
frontend:
condition: service_started
postgres:
condition: service_healthy
links:
- postgres
volumes:
- .:/usr/src/app:ro
- frontend:/usr/src/app/kirppu/static:ro
environment:
DEBUG: 1
DATABASE_URL: psql://kirppu:secret@postgres/kirppu
ALLOWED_HOSTS: "*"
postgres:
image: postgres
volumes:
- postgres-data:/var/lib/postgresql
environment:
POSTGRES_USER: kirppu
POSTGRES_PASSWORD: secret
POSTGRES_DB: kirppu
healthcheck:
test: ["CMD", "pg_isready", "--user=kirppu", "--dbname=kirppu"]
# Docker prior 25.0 don't support start_period, so use something like 5s for it.
interval: ${PG_HEALTH_INTERVAL:-5m}
timeout: 10s
retries: 3
start_period: 30s
start_interval: 2s
volumes:
postgres-data:
driver: local
# Shared volume from frontend to web.
frontend:
driver: local