首先创建虚拟网络:
docker network create trae-network
启动 PostgreSQL 数据库:
docker run -d --name postgres \
-e POSTGRES_PASSWORD=123456 \
-p 5432:5432 \
--network trae-network \
postgres:17
cd backend
docker build -t trae-backend .
docker run -d --name trae-backend \
--network trae-network \
-p 8080:8080 \
-e DB_HOST=postgres \
-e DB_USER=postgres \
-e DB_PASSWORD=123456 \
-e DB_NAME=postgres \
trae-backend
docker run -d --name trae-backend \
--network trae-network \
-p 8080:8080 \
-e DB_HOST=postgres \
-e DB_USER=postgres \
-e DB_PASSWORD=123456 \
-e DB_NAME=postgres \
i-do-docker.pkg.coding.net/github/trae-demo/backend
cd frontend
docker build -t trae-frontend .
docker run -d --name trae-frontend \
--network trae-network \
-p 5173:80 \
trae-frontend
docker run -d --name trae-frontend \
--network trae-network \
-p 5173:80 \
i-do-docker.pkg.coding.net/github/trae-demo/frontend
生产环境中,建议使用 Nginx 作为反向代理,统一处理前端静态文件和 API 请求。
前端已配置为生产环境下使用相对路径访问 API:
http://localhost:8080/api
/api
这样的配置确保了:
变量名 | 说明 | 默认值 |
---|---|---|
DB_HOST |
数据库主机 | localhost |
DB_PORT |
数据库端口 | 5432 |
DB_USER |
数据库用户名 | postgres |
DB_PASSWORD |
数据库密码 | - |
DB_NAME |
数据库名称 | postgres |
PORT |
服务端口 | 8080 |
LOG_LEVEL |
日志级别 | info |
变量名 | 说明 | 默认值 |
---|---|---|
VITE_API_BASE_URL |
API 基础地址 | /api |
创建 docker-compose.yml
文件:
version: '3.8'
services:
postgres:
image: postgres:17
container_name: postgres
environment:
POSTGRES_PASSWORD: 123456
ports:
- "5432:5432"
volumes:
- postgres_data:/var/lib/postgresql/data
networks:
- trae-network
backend:
image: i-do-docker.pkg.coding.net/github/trae-demo/backend
container_name: trae-backend
environment:
DB_HOST: postgres
DB_USER: postgres
DB_PASSWORD: 123456
DB_NAME: postgres
ports:
- "8080:8080"
depends_on:
- postgres
networks:
- trae-network
frontend:
image: i-do-docker.pkg.coding.net/github/trae-demo/frontend
container_name: trae-frontend
ports:
- "5173:80"
depends_on:
- backend
networks:
- trae-network
volumes:
postgres_data:
networks:
trae-network:
driver: bridge
启动所有服务:
docker-compose up -d
curl http://localhost:8080/api/health
访问 http://localhost:5173
确认前端应用正常运行。
# 查看后端日志
docker logs trae-backend
# 查看前端日志
docker logs trae-frontend
# 查看数据库日志
docker logs postgres
# 实时查看后端日志
docker logs -f trae-backend
docker exec postgres pg_dump -U postgres postgres > backup.sql
docker exec -i postgres psql -U postgres postgres < backup.sql