-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
94 lines (90 loc) · 2.94 KB
/
docker-compose.yml
File metadata and controls
94 lines (90 loc) · 2.94 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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
services:
topiclab-backend:
build:
context: ./topiclab-backend
args:
PYTHON_BASE_IMAGE: ${PYTHON_BASE_IMAGE:-docker.m.daocloud.io/library/python:3.11-slim}
# 阿里云超时时可设 PIP_INDEX_URL=https://pypi.org/simple/ PIP_TRUSTED_HOST=pypi.org
PIP_INDEX_URL: ${PIP_INDEX_URL:-https://mirrors.aliyun.com/pypi/simple/}
PIP_TRUSTED_HOST: ${PIP_TRUSTED_HOST:-mirrors.aliyun.com}
env_file:
- ${ENV_FILE:-.env}
environment:
- WORKSPACE_BASE=/app/workspace
- TOPICLAB_SYNC_URL=${TOPICLAB_SYNC_URL:-http://topiclab-backend:8000}
ports:
- "${TOPICLAB_BACKEND_PORT:-8001}:8000"
volumes:
- ${WORKSPACE_PATH:-./workspace}:/app/workspace
- ${LIBS_PATH:-./backend/libs}:/app/libs:ro
networks:
- app-network
healthcheck:
test: ["CMD-SHELL", "python -c \"import urllib.request; urllib.request.urlopen('http://127.0.0.1:8000/health', timeout=15)\""]
interval: 10s
timeout: 20s
retries: 15
start_period: 45s
backend:
build:
context: ./backend
args:
PYTHON_BASE_IMAGE: ${PYTHON_BASE_IMAGE:-docker.m.daocloud.io/library/python:3.11-slim}
env_file:
- ${ENV_FILE:-.env}
ports:
- "${BACKEND_PORT:-8000}:8000"
environment:
- WORKSPACE_BASE=/app/workspace
volumes:
- ${WORKSPACE_PATH:-./workspace}:/app/workspace
- ${LIBS_PATH:-./backend/libs}:/app/libs
networks:
- app-network
healthcheck:
test: ["CMD-SHELL", "python -c \"import urllib.request; urllib.request.urlopen('http://127.0.0.1:8000/health', timeout=10)\""]
interval: 5s
timeout: 15s
retries: 12
start_period: 30s
frontend:
build:
context: ./frontend
args:
NODE_BASE_IMAGE: ${NODE_BASE_IMAGE:-docker.m.daocloud.io/library/node:20-slim}
NGINX_BASE_IMAGE: ${NGINX_BASE_IMAGE:-docker.m.daocloud.io/library/nginx:alpine}
VITE_BASE_PATH: ${VITE_BASE_PATH:-/topic-lab/}
ports:
- "${FRONTEND_PORT:-3000}:80"
depends_on:
backend:
condition: service_healthy
topiclab-backend:
condition: service_healthy
networks:
- app-network
topiclab-cli-runner:
profiles:
- cli
build:
context: ./topiclab-cli
args:
NODE_BASE_IMAGE: ${NODE_BASE_IMAGE:-docker.m.daocloud.io/library/node:20-slim}
environment:
- TOPICLAB_BASE_URL=http://topiclab-backend:8000
- TOPICLAB_CLI_HOME=/tmp/topiclab-cli
- TOPICLAB_SMOKE_MEDIA_FILE=/fixtures/logo_complete.webp
- TOPICLAB_SMOKE_SKIP_MEDIA_UPLOAD=${TOPICLAB_SMOKE_SKIP_MEDIA_UPLOAD:-0}
depends_on:
backend:
condition: service_healthy
topiclab-backend:
condition: service_healthy
command: ["node", "dist/cli.js", "--help"]
volumes:
- ./frontend/public/media/logo_complete.webp:/fixtures/logo_complete.webp:ro
networks:
- app-network
networks:
app-network:
driver: bridge