如何在GitHub Codespace搭建含Postgres及Node.js的开发环境?
可行,以下是具体操作步骤
一、准备仓库文件
你可以新建一个GitHub仓库,直接用下面的文件结构来配置环境:
.devcontainer/devcontainer.json(定义Codespaces环境配置).devcontainer/docker-compose.yml(配置Postgres服务)- 可选:
package.json(Node.js项目依赖配置)
1. 编写 .devcontainer/devcontainer.json
{ "name": "Postgres + Node.js Codespace", "dockerComposeFile": "docker-compose.yml", "service": "app", "workspaceFolder": "/workspace", "features": { "ghcr.io/devcontainers/features/node:1": { "nodeGypDependencies": true, "version": "20" } }, "postCreateCommand": "npm install", "customizations": { "vscode": { "extensions": [ "ms-ossdata.vscode-postgresql" ] } } }
2. 编写 .devcontainer/docker-compose.yml
version: '3.8' services: app: image: mcr.microsoft.com/devcontainers/base:ubuntu volumes: - ..:/workspace:cached command: sleep infinity environment: - POSTGRES_HOST=db - POSTGRES_USER=postgres - POSTGRES_PASSWORD=postgres - POSTGRES_DB=mydb depends_on: - db db: image: postgres:16 restart: unless-stopped volumes: - postgres-data:/var/lib/postgresql/data environment: - POSTGRES_USER=postgres - POSTGRES_PASSWORD=postgres - POSTGRES_DB=mydb volumes: postgres-data:
3. 可选:添加 package.json(用于Node.js依赖管理)
{ "name": "postgres-codespace-demo", "version": "1.0.0", "dependencies": { "pg": "^8.11.3" } }
二、启动GitHub Codespaces
- 将上述文件全部推送到你的GitHub仓库
- 打开仓库页面,点击顶部的「Code」按钮,切换到「Codespaces」标签页,点击「Create codespace on main」
- 等待环境构建完成(第一次构建需要下载镜像,耗时约1-3分钟)
三、测试PostgreSQL命令行操作
环境构建完成后,打开终端执行以下操作:
- 连接Postgres数据库:
psql -h db -U postgres -d mydb
(密码为postgres,直接回车即可)
- 执行基础SQL操作:
- 创建表:
CREATE TABLE users ( id SERIAL PRIMARY KEY, name VARCHAR(50) NOT NULL, email VARCHAR(100) UNIQUE NOT NULL );
- 插入数据:
INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com'), ('Bob', 'bob@example.com');
- 查询数据:
SELECT * FROM users;
- 退出psql:输入
\q回车即可
四、测试Node.js连接Postgres
如果添加了package.json,可以创建一个index.js文件:
const { Client } = require('pg'); const client = new Client({ host: 'db', user: 'postgres', password: 'postgres', database: 'mydb' }); async function run() { await client.connect(); const res = await client.query('SELECT * FROM users'); console.log('查询结果:', res.rows); await client.end(); } run().catch(err => console.error(err));
运行脚本:
node index.js
注意事项
- 第一次构建环境时,Docker镜像需要下载,耐心等待即可
- 如果需要修改Postgres的用户名/密码,直接修改
docker-compose.yml里的环境变量即可 - Codespaces停止后,Postgres的数据会保存在卷中,下次启动可直接复用
内容的提问来源于stack exchange,提问作者Ron Southin
相关产品推荐
相关产品推荐

