需要使用 Docker Compose 来管理 Astro 和其依赖项的多个容器,确保 Astro 容器能够重新构建并加载新代码。
以下是示例的 Docker Compose 文件:
version: '3'
services:
astro:
build:
context: .
ports:
- "3000:3000"
volumes:
- .:/app
depends_on:
- api
environment:
- NODE_ENV=development
- API_URL=http://api:8000
networks:
- app-net
api:
build:
context: ./api
ports:
- "8000:8000"
volumes:
- ./api:/app
environment:
- NODE_ENV=development
- DATABASE_URL=postgres://postgres:password@db:5432/my_db
networks:
- app-net
db:
image: postgres:13.4-alpine
ports:
- "5432:5432"
environment:
- POSTGRES_PASSWORD=password
- POSTGRES_DB=my_db
networks:
- app-net
networks:
app-net:
driver: bridge
这个 Docker Compose 文件具有 Astro、API 和 DB 三个服务。Astro 镜像将从文件上下文中的当前目录构建,API 镜像将从 ./api
目录中构建,DB 将使用官方 Postgres 镜像。
在本地开发期间,将 NODE_ENV
设置为开发模式并将 Astro 替换为本地节点。API 和 DB 也将运行在容器中,以便与 Astro 容器进行通信。
要启动这些容器,请使用以下命令:
docker-compose up
此命令将启动所有服务,并将您放置在日志中以供查看。要停止服务,请使用:
docker-compose down
使用此 Docker Compose 文件,您应该能够在 Astro 修改代码并刷新浏览器时自动重新构