Skip to content

Commit f0f174c

Browse files
committed
feat: add docker compose config for db
1 parent b0f6195 commit f0f174c

File tree

3 files changed

+258
-380
lines changed

3 files changed

+258
-380
lines changed

backend/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ dependencies = [
1515
"alembic<2.0.0,>=1.12.1",
1616
"httpx<1.0.0,>=0.25.1",
1717
"psycopg[binary]<4.0.0,>=3.1.13",
18-
"sqlmodel<1.0.0,>=0.0.21",
18+
"sqlmodel>=0.0.21,<1.0.0",
1919
# Pin bcrypt until passlib supports the latest
2020
"bcrypt==4.0.1",
2121
"pydantic-settings<3.0.0,>=2.2.1",

docker-compose.yml

Lines changed: 4 additions & 155 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,6 @@ services:
33
db:
44
image: postgres:12
55
restart: always
6-
healthcheck:
7-
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"]
8-
interval: 10s
9-
retries: 5
10-
start_period: 30s
11-
timeout: 10s
126
volumes:
137
- app-db-data:/var/lib/postgresql/data/pgdata
148
env_file:
@@ -18,154 +12,9 @@ services:
1812
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD?Variable not set}
1913
- POSTGRES_USER=${POSTGRES_USER?Variable not set}
2014
- POSTGRES_DB=${POSTGRES_DB?Variable not set}
15+
ports:
16+
- "5432:5432"
2117

22-
adminer:
23-
image: adminer
24-
restart: always
25-
networks:
26-
- traefik-public
27-
- default
28-
depends_on:
29-
- db
30-
environment:
31-
- ADMINER_DESIGN=pepa-linha-dark
32-
labels:
33-
- traefik.enable=true
34-
- traefik.docker.network=traefik-public
35-
- traefik.constraint-label=traefik-public
36-
- traefik.http.routers.${STACK_NAME?Variable not set}-adminer-http.rule=Host(`adminer.${DOMAIN?Variable not set}`)
37-
- traefik.http.routers.${STACK_NAME?Variable not set}-adminer-http.entrypoints=http
38-
- traefik.http.routers.${STACK_NAME?Variable not set}-adminer-http.middlewares=https-redirect
39-
- traefik.http.routers.${STACK_NAME?Variable not set}-adminer-https.rule=Host(`adminer.${DOMAIN?Variable not set}`)
40-
- traefik.http.routers.${STACK_NAME?Variable not set}-adminer-https.entrypoints=https
41-
- traefik.http.routers.${STACK_NAME?Variable not set}-adminer-https.tls=true
42-
- traefik.http.routers.${STACK_NAME?Variable not set}-adminer-https.tls.certresolver=le
43-
- traefik.http.services.${STACK_NAME?Variable not set}-adminer.loadbalancer.server.port=8080
44-
45-
prestart:
46-
image: '${DOCKER_IMAGE_BACKEND?Variable not set}:${TAG-latest}'
47-
build:
48-
context: ./backend
49-
networks:
50-
- traefik-public
51-
- default
52-
depends_on:
53-
db:
54-
condition: service_healthy
55-
restart: true
56-
command: bash scripts/prestart.sh
57-
env_file:
58-
- .env
59-
environment:
60-
- DOMAIN=${DOMAIN}
61-
- FRONTEND_HOST=${FRONTEND_HOST?Variable not set}
62-
- ENVIRONMENT=${ENVIRONMENT}
63-
- BACKEND_CORS_ORIGINS=${BACKEND_CORS_ORIGINS}
64-
- SECRET_KEY=${SECRET_KEY?Variable not set}
65-
- FIRST_SUPERUSER=${FIRST_SUPERUSER?Variable not set}
66-
- FIRST_SUPERUSER_PASSWORD=${FIRST_SUPERUSER_PASSWORD?Variable not set}
67-
- SMTP_HOST=${SMTP_HOST}
68-
- SMTP_USER=${SMTP_USER}
69-
- SMTP_PASSWORD=${SMTP_PASSWORD}
70-
- EMAILS_FROM_EMAIL=${EMAILS_FROM_EMAIL}
71-
- POSTGRES_SERVER=db
72-
- POSTGRES_PORT=${POSTGRES_PORT}
73-
- POSTGRES_DB=${POSTGRES_DB}
74-
- POSTGRES_USER=${POSTGRES_USER?Variable not set}
75-
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD?Variable not set}
76-
- SENTRY_DSN=${SENTRY_DSN}
77-
78-
backend:
79-
image: '${DOCKER_IMAGE_BACKEND?Variable not set}:${TAG-latest}'
80-
restart: always
81-
networks:
82-
- traefik-public
83-
- default
84-
depends_on:
85-
db:
86-
condition: service_healthy
87-
restart: true
88-
prestart:
89-
condition: service_completed_successfully
90-
env_file:
91-
- .env
92-
environment:
93-
- DOMAIN=${DOMAIN}
94-
- FRONTEND_HOST=${FRONTEND_HOST?Variable not set}
95-
- ENVIRONMENT=${ENVIRONMENT}
96-
- BACKEND_CORS_ORIGINS=${BACKEND_CORS_ORIGINS}
97-
- SECRET_KEY=${SECRET_KEY?Variable not set}
98-
- FIRST_SUPERUSER=${FIRST_SUPERUSER?Variable not set}
99-
- FIRST_SUPERUSER_PASSWORD=${FIRST_SUPERUSER_PASSWORD?Variable not set}
100-
- SMTP_HOST=${SMTP_HOST}
101-
- SMTP_USER=${SMTP_USER}
102-
- SMTP_PASSWORD=${SMTP_PASSWORD}
103-
- EMAILS_FROM_EMAIL=${EMAILS_FROM_EMAIL}
104-
- POSTGRES_SERVER=db
105-
- POSTGRES_PORT=${POSTGRES_PORT}
106-
- POSTGRES_DB=${POSTGRES_DB}
107-
- POSTGRES_USER=${POSTGRES_USER?Variable not set}
108-
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD?Variable not set}
109-
- SENTRY_DSN=${SENTRY_DSN}
110-
111-
healthcheck:
112-
test: ["CMD", "curl", "-f", "http://localhost:8000/api/v1/utils/health-check/"]
113-
interval: 10s
114-
timeout: 5s
115-
retries: 5
116-
117-
build:
118-
context: ./backend
119-
labels:
120-
- traefik.enable=true
121-
- traefik.docker.network=traefik-public
122-
- traefik.constraint-label=traefik-public
123-
124-
- traefik.http.services.${STACK_NAME?Variable not set}-backend.loadbalancer.server.port=8000
125-
126-
- traefik.http.routers.${STACK_NAME?Variable not set}-backend-http.rule=Host(`api.${DOMAIN?Variable not set}`)
127-
- traefik.http.routers.${STACK_NAME?Variable not set}-backend-http.entrypoints=http
128-
129-
- traefik.http.routers.${STACK_NAME?Variable not set}-backend-https.rule=Host(`api.${DOMAIN?Variable not set}`)
130-
- traefik.http.routers.${STACK_NAME?Variable not set}-backend-https.entrypoints=https
131-
- traefik.http.routers.${STACK_NAME?Variable not set}-backend-https.tls=true
132-
- traefik.http.routers.${STACK_NAME?Variable not set}-backend-https.tls.certresolver=le
133-
134-
# Enable redirection for HTTP and HTTPS
135-
- traefik.http.routers.${STACK_NAME?Variable not set}-backend-http.middlewares=https-redirect
136-
137-
frontend:
138-
image: '${DOCKER_IMAGE_FRONTEND?Variable not set}:${TAG-latest}'
139-
restart: always
140-
networks:
141-
- traefik-public
142-
- default
143-
build:
144-
context: ./frontend
145-
args:
146-
- VITE_API_URL=https://api.${DOMAIN?Variable not set}
147-
- NODE_ENV=production
148-
labels:
149-
- traefik.enable=true
150-
- traefik.docker.network=traefik-public
151-
- traefik.constraint-label=traefik-public
152-
153-
- traefik.http.services.${STACK_NAME?Variable not set}-frontend.loadbalancer.server.port=80
154-
155-
- traefik.http.routers.${STACK_NAME?Variable not set}-frontend-http.rule=Host(`dashboard.${DOMAIN?Variable not set}`)
156-
- traefik.http.routers.${STACK_NAME?Variable not set}-frontend-http.entrypoints=http
157-
158-
- traefik.http.routers.${STACK_NAME?Variable not set}-frontend-https.rule=Host(`dashboard.${DOMAIN?Variable not set}`)
159-
- traefik.http.routers.${STACK_NAME?Variable not set}-frontend-https.entrypoints=https
160-
- traefik.http.routers.${STACK_NAME?Variable not set}-frontend-https.tls=true
161-
- traefik.http.routers.${STACK_NAME?Variable not set}-frontend-https.tls.certresolver=le
162-
163-
# Enable redirection for HTTP and HTTPS
164-
- traefik.http.routers.${STACK_NAME?Variable not set}-frontend-http.middlewares=https-redirect
18+
16519
volumes:
166-
app-db-data:
167-
168-
networks:
169-
traefik-public:
170-
# Allow setting it to false for testing
171-
external: true
20+
app-db-data:

0 commit comments

Comments
 (0)