Refresh code server
This commit is contained in:
@@ -1,82 +0,0 @@
|
||||
# 🎯 5 分鐘快速開始
|
||||
|
||||
## 步驟 1:啟動 Coder Server(已在 Docker 運行)
|
||||
|
||||
```bash
|
||||
docker-compose -f vs-code-server.yml up -d
|
||||
```
|
||||
|
||||
驗證:訪問 https://code.karylab.com
|
||||
|
||||
---
|
||||
|
||||
## 步驟 2:上傳 Template
|
||||
|
||||
```bash
|
||||
# 進入 template 目錄
|
||||
cd c:\Users\ckliu\Documents\docker_stack\vs-code-server
|
||||
|
||||
# 登入 Coder(首次)
|
||||
coder login https://code.karylab.com
|
||||
|
||||
# 上傳 template
|
||||
coder templates create -d ./template --name vscode
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 步驟 3:建立 Workspace(以使用者身份)
|
||||
|
||||
1. 進入 https://code.karylab.com
|
||||
2. 用 GitHub 登入
|
||||
3. Dashboard → "Create Workspace"
|
||||
4. 選 "vscode" template
|
||||
5. 輸入 workspace 名稱
|
||||
6. 點擊 "Create"
|
||||
7. 等待 30-60 秒
|
||||
|
||||
---
|
||||
|
||||
## 步驟 4:使用 VSCode + Copilot
|
||||
|
||||
1. Workspace 啟動後 → 在 Dashboard 中應看到 "code" 應用
|
||||
2. 點擊 "code" 進入 VSCode
|
||||
3. 左側 Extensions → 搜尋 "GitHub Copilot"
|
||||
4. 安裝並授權
|
||||
5. 開始寫代碼,Copilot 自動完成!
|
||||
|
||||
---
|
||||
|
||||
## 常用命令
|
||||
|
||||
```bash
|
||||
# 上傳 template(更新後重新執行)
|
||||
coder templates create -d ./template --name vscode
|
||||
|
||||
# 查看已上傳的 templates
|
||||
coder templates list
|
||||
|
||||
# 刪除 template
|
||||
coder templates delete vscode
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 常見問題速查
|
||||
|
||||
| 問題 | 解決方案 |
|
||||
|------|--------|
|
||||
| Workspace 無法啟動 | 查看 Dashboard → Workspace → Logs |
|
||||
| Copilot 無法認證 | 重新登入:Ctrl+Shift+P → "Copilot: Sign In" |
|
||||
| 檔案未保存 | Settings → Auto Save → 確認已啟用 |
|
||||
| 容器無法訪問 | 檢查 Docker 是否運行、防火牆設定 |
|
||||
|
||||
---
|
||||
|
||||
## 🎓 更詳細的說明
|
||||
|
||||
查看 `README-CN.md` 瞭解完整功能、配置、故障排除等。
|
||||
|
||||
---
|
||||
|
||||
**下一步:** 登入 Coder,建立第一個 Workspace!
|
||||
@@ -1,138 +0,0 @@
|
||||
terraform {
|
||||
required_providers {
|
||||
coder = {
|
||||
source = "coder/coder"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
locals {
|
||||
username = data.coder_workspace_owner.me.name
|
||||
user_id = data.coder_workspace_owner.me.id
|
||||
}
|
||||
|
||||
data "coder_provisioner" "me" {}
|
||||
data "coder_workspace" "me" {}
|
||||
data "coder_workspace_owner" "me" {}
|
||||
|
||||
variable "github_token" {
|
||||
description = "GitHub token for Copilot (optional)"
|
||||
type = string
|
||||
sensitive = true
|
||||
default = ""
|
||||
}
|
||||
|
||||
resource "coder_agent" "main" {
|
||||
arch = data.coder_provisioner.me.arch
|
||||
os = "linux"
|
||||
|
||||
startup_script = <<-EOT
|
||||
#!/bin/bash
|
||||
set +e
|
||||
|
||||
# 初始化使用者目錄
|
||||
if [ ! -f ~/.init_done ]; then
|
||||
cp -rT /etc/skel ~ 2>/dev/null || true
|
||||
touch ~/.init_done
|
||||
fi
|
||||
mkdir -p ~/.config ~/.cache ~/.local/share
|
||||
|
||||
# 確保 code-server 運行中
|
||||
# codercom/enterprise-base 已預裝 code-server
|
||||
# Coder agent 會自動管理 code-server 進程
|
||||
EOT
|
||||
|
||||
env = {
|
||||
GIT_AUTHOR_NAME = coalesce(data.coder_workspace_owner.me.full_name, data.coder_workspace_owner.me.name)
|
||||
GIT_AUTHOR_EMAIL = data.coder_workspace_owner.me.email
|
||||
GIT_COMMITTER_NAME = coalesce(data.coder_workspace_owner.me.full_name, data.coder_workspace_owner.me.name)
|
||||
GIT_COMMITTER_EMAIL = data.coder_workspace_owner.me.email
|
||||
GITHUB_TOKEN = var.github_token != "" ? var.github_token : ""
|
||||
}
|
||||
|
||||
metadata {
|
||||
display_name = "CPU Usage"
|
||||
key = "0_cpu_usage"
|
||||
script = "coder stat cpu"
|
||||
interval = 10
|
||||
timeout = 1
|
||||
}
|
||||
|
||||
metadata {
|
||||
display_name = "RAM Usage"
|
||||
key = "1_ram_usage"
|
||||
script = "coder stat mem"
|
||||
interval = 10
|
||||
timeout = 1
|
||||
}
|
||||
|
||||
metadata {
|
||||
display_name = "Home Disk"
|
||||
key = "3_home_disk"
|
||||
script = "coder stat disk --path $${HOME}"
|
||||
interval = 60
|
||||
timeout = 1
|
||||
}
|
||||
|
||||
metadata {
|
||||
display_name = "CPU Usage (Host)"
|
||||
key = "4_cpu_usage_host"
|
||||
script = "coder stat cpu --host"
|
||||
interval = 10
|
||||
timeout = 1
|
||||
}
|
||||
|
||||
metadata {
|
||||
display_name = "Memory Usage (Host)"
|
||||
key = "5_mem_usage_host"
|
||||
script = "coder stat mem --host"
|
||||
interval = 10
|
||||
timeout = 1
|
||||
}
|
||||
|
||||
metadata {
|
||||
display_name = "Load Average (Host)"
|
||||
key = "6_load_host"
|
||||
script = "echo \"$$(cat /proc/loadavg | awk '{ print $$1 }') $$(nproc)\" | awk '{ printf \"%0.2f\", $$1/$$2 }'"
|
||||
interval = 60
|
||||
timeout = 1
|
||||
}
|
||||
|
||||
metadata {
|
||||
display_name = "Swap Usage (Host)"
|
||||
key = "7_swap_host"
|
||||
script = "free -b | awk '/^Swap/ { printf(\"%.1f/%.1f\", $$3/1024.0/1024.0/1024.0, $$2/1024.0/1024.0/1024.0) }'"
|
||||
interval = 10
|
||||
timeout = 1
|
||||
}
|
||||
}
|
||||
|
||||
# code-server 應用配置
|
||||
resource "coder_app" "code_server" {
|
||||
count = data.coder_workspace.me.start_count
|
||||
agent_id = coder_agent.main.id
|
||||
slug = "code-server"
|
||||
display_name = "code-server"
|
||||
icon = "/icon/code.svg"
|
||||
url = "http://localhost:13337"
|
||||
subdomain = false
|
||||
share = "owner"
|
||||
|
||||
healthcheck {
|
||||
url = "http://localhost:13337/health"
|
||||
interval = 3
|
||||
threshold = 10
|
||||
}
|
||||
}
|
||||
|
||||
# JetBrains IDE 支援(可選)
|
||||
resource "coder_app" "jetbrains" {
|
||||
count = data.coder_workspace.me.start_count
|
||||
agent_id = coder_agent.main.id
|
||||
slug = "jetbrains"
|
||||
display_name = "JetBrains Toolbox"
|
||||
icon = "/icon/jetbrains.svg"
|
||||
url = "http://localhost:5037"
|
||||
subdomain = false
|
||||
share = "owner"
|
||||
}
|
||||
@@ -1,46 +0,0 @@
|
||||
# 定義 Terraform 輸出(使用者在 Coder Dashboard 可看到)
|
||||
|
||||
output "workspace_owner" {
|
||||
description = "Workspace owner (GitHub username)"
|
||||
value = data.coder_workspace_owner.me.name
|
||||
}
|
||||
|
||||
output "workspace_id" {
|
||||
description = "Workspace unique ID"
|
||||
value = data.coder_workspace.me.id
|
||||
}
|
||||
|
||||
output "agent_status" {
|
||||
description = "Coder Agent status"
|
||||
value = "Check agent details in Coder UI"
|
||||
}
|
||||
|
||||
output "code_server_info" {
|
||||
description = "code-server 存取資訊"
|
||||
value = "Click 'code-server' button in Workspace details"
|
||||
}
|
||||
|
||||
output "volume_name" {
|
||||
description = "Docker volume name for this workspace"
|
||||
value = "coder-${data.coder_workspace.me.id}-home"
|
||||
}
|
||||
|
||||
output "git_config" {
|
||||
description = "Git 已配置的使用者資訊"
|
||||
value = {
|
||||
author_name = coalesce(data.coder_workspace_owner.me.full_name, data.coder_workspace_owner.me.name)
|
||||
author_email = data.coder_workspace_owner.me.email
|
||||
}
|
||||
sensitive = true
|
||||
}
|
||||
|
||||
output "resources_monitored" {
|
||||
description = "已啟用的監控指標"
|
||||
value = [
|
||||
"CPU Usage (current & host)",
|
||||
"RAM Usage (current & host)",
|
||||
"Disk Usage (home directory)",
|
||||
"System Load Average",
|
||||
"Swap Usage"
|
||||
]
|
||||
}
|
||||
@@ -1,337 +0,0 @@
|
||||
# 🚀 Coder VSCode Template 使用指南
|
||||
|
||||
## 📋 功能清單
|
||||
|
||||
- ✅ 每個使用者獨立 Workspace
|
||||
- ✅ GitHub OIDC 登入認證
|
||||
- ✅ GitHub Copilot 支援
|
||||
- ✅ code-server 網頁版 VSCode
|
||||
- ✅ 自動存檔
|
||||
- ✅ 程式碼 & 設定持久化 (Volume)
|
||||
- ✅ JetBrains IDE 支援(可選)
|
||||
- ✅ 資源監控(CPU、RAM、Disk)
|
||||
|
||||
---
|
||||
|
||||
## 🎯 使用流程
|
||||
|
||||
### 第一步:啟動 Coder Server
|
||||
|
||||
你的 Docker 環境中已有 `vs-code-server.yml`,執行:
|
||||
|
||||
```bash
|
||||
cd c:\Users\ckliu\Documents\docker_stack\vs-code-server
|
||||
docker-compose -f vs-code-server.yml up -d
|
||||
```
|
||||
|
||||
檢查 Coder 是否正常運行:
|
||||
```bash
|
||||
# 訪問
|
||||
https://code.karylab.com
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 第二步:上傳 Template 到 Coder
|
||||
|
||||
#### 方法 A:使用 Coder CLI(推薦)
|
||||
|
||||
```bash
|
||||
# 1. 安裝 Coder CLI(如果還沒安裝)
|
||||
# 參考:https://coder.com/docs/install
|
||||
|
||||
# 2. 登入 Coder server
|
||||
coder login https://code.karylab.com
|
||||
|
||||
# 3. 上傳 template
|
||||
coder templates create \
|
||||
-d c:\Users\ckliu\Documents\docker_stack\vs-code-server\template \
|
||||
--name vscode
|
||||
```
|
||||
|
||||
#### 方法 B:在 Coder UI 手動上傳
|
||||
|
||||
1. 進入 https://code.karylab.com/admin/templates
|
||||
2. 點擊 "Create template"
|
||||
3. 上傳整個 `template` 資料夾
|
||||
4. 設定名稱為 "vscode"
|
||||
5. 點擊 "Create"
|
||||
|
||||
---
|
||||
|
||||
### 第三步:使用者建立 Workspace
|
||||
|
||||
**以普通使用者身份:**
|
||||
|
||||
1. **用 GitHub 登入 Coder**
|
||||
```
|
||||
進入 https://code.karylab.com
|
||||
→ 點擊 "Sign in with GitHub"
|
||||
→ 授權
|
||||
```
|
||||
|
||||
2. **建立新 Workspace**
|
||||
```
|
||||
Dashboard → "Create Workspace"
|
||||
→ Select template: "vscode"
|
||||
→ Workspace name: "my-first-workspace"
|
||||
→ 點擊 "Create"
|
||||
```
|
||||
|
||||
3. **等待初始化**
|
||||
```
|
||||
狀態從 "Provisioning" → "Running"
|
||||
(首次約 30-60 秒)
|
||||
```
|
||||
|
||||
4. **進入 VSCode**
|
||||
```
|
||||
Workspace 啟動後 → 在 Dashboard 中應看到 "code" 應用
|
||||
→ 點擊進入網頁版 VSCode
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 💡 在 VSCode 中使用 GitHub Copilot
|
||||
|
||||
### 自動啟用(推薦)
|
||||
|
||||
因為你已用 GitHub 登入,Copilot 會自動使用你的 GitHub 身份:
|
||||
|
||||
1. 進入 VSCode → Extensions (Ctrl+Shift+X)
|
||||
2. 搜尋 "GitHub Copilot"
|
||||
3. 安裝官方 extension(Microsoft 出品)
|
||||
4. 完成 → Copilot 自動認證
|
||||
|
||||
### 手動驗證
|
||||
|
||||
打開任何代碼文件,開始輸入:
|
||||
|
||||
```python
|
||||
# 計算兩個數的和
|
||||
|
||||
# Copilot 應該會自動完成:
|
||||
def add(a, b):
|
||||
return a + b
|
||||
```
|
||||
|
||||
如果沒有自動完成建議,檢查:
|
||||
- Extension 是否已安裝
|
||||
- GitHub 登入是否有效
|
||||
|
||||
---
|
||||
|
||||
## 📁 你的檔案存放位置
|
||||
|
||||
每個 Workspace 的檔案存儲結構:
|
||||
|
||||
```
|
||||
Docker Volume: coder-<user-id>-<workspace-name>
|
||||
└── /home/coder/
|
||||
├── .config/code-server/ ← VSCode 設定、extension 清單
|
||||
├── .cache/ ← Copilot 快取、編譯快取
|
||||
├── .local/share/ ← VSCode 歷史、其他數據
|
||||
├── .init_done ← 初始化標記(首次啟動時建立)
|
||||
└── (你的程式碼檔案) ← 自動持久化
|
||||
```
|
||||
|
||||
**重要:** 所有檔案都保存在 Docker volume 中,你登出或停止 Workspace 時 **不會遺失**。
|
||||
|
||||
---
|
||||
|
||||
## 🔄 常見操作
|
||||
|
||||
### 重啟 Workspace
|
||||
|
||||
```
|
||||
Dashboard → 選擇你的 Workspace
|
||||
→ 點擊"..."菜單
|
||||
→ "Stop"(等 30 秒)
|
||||
→ "Start"
|
||||
```
|
||||
|
||||
### 刪除 Workspace
|
||||
|
||||
```
|
||||
Dashboard → 選擇你的 Workspace
|
||||
→ 點擊"..."菜單
|
||||
→ "Delete"
|
||||
⚠️ 警告:會永久刪除該 Workspace 的所有檔案!
|
||||
```
|
||||
|
||||
### 查看 Workspace 日誌
|
||||
|
||||
```
|
||||
Dashboard → 選擇你的 Workspace
|
||||
→ 點擊"Logs"
|
||||
(可看 startup_script 的執行結果,有錯誤時很有用)
|
||||
```
|
||||
|
||||
### 自訂 Extensions
|
||||
|
||||
在 VSCode 的終端執行:
|
||||
|
||||
```bash
|
||||
# 安裝 extension
|
||||
code-server --install-extension ms-vscode.cpptools
|
||||
code-server --install-extension ms-python.python
|
||||
code-server --install-extension rust-lang.rust-analyzer
|
||||
|
||||
# 查看已安裝
|
||||
code-server --list-extensions
|
||||
|
||||
# 卸載 extension
|
||||
code-server --uninstall-extension <extension-id>
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ⚙️ 進階配置
|
||||
|
||||
### 如果要自動安裝特定 Extensions
|
||||
|
||||
編輯 `main.tf` 中的 `startup_script` 部分:
|
||||
|
||||
```hcl
|
||||
startup_script = <<-EOT
|
||||
set -e
|
||||
|
||||
# 初始化使用者目錄
|
||||
if [ ! -f ~/.init_done ]; then
|
||||
cp -rT /etc/skel ~
|
||||
touch ~/.init_done
|
||||
fi
|
||||
|
||||
# 確保必要目錄存在
|
||||
mkdir -p ~/.config ~/.cache ~/.local/share
|
||||
|
||||
# 自動安裝 extensions
|
||||
code-server --install-extension github.copilot
|
||||
code-server --install-extension ms-vscode.cpptools
|
||||
code-server --install-extension ms-python.python
|
||||
EOT
|
||||
```
|
||||
|
||||
然後重新上傳 template:
|
||||
|
||||
```bash
|
||||
coder templates create \
|
||||
-d c:\Users\ckliu\Documents\docker_stack\vs-code-server\template \
|
||||
--name vscode
|
||||
```
|
||||
|
||||
### 傳入 GitHub Token(可選)
|
||||
|
||||
如果要顯式指定 GitHub token,建立 Workspace 時傳入:
|
||||
|
||||
```bash
|
||||
coder create my-workspace \
|
||||
--parameter github_token="ghp_xxxxxxxxxxxxxxxxxxxx"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🐛 常見問題
|
||||
|
||||
### Q1:Copilot 無法工作
|
||||
|
||||
**症狀:** 沒有自動完成建議,或顯示"Not Authorized"
|
||||
|
||||
**解決步驟:**
|
||||
1. 檢查是否已安裝 GitHub Copilot extension
|
||||
2. 在 VSCode 中按 `Ctrl+Shift+P` → 搜尋 "Copilot"
|
||||
3. 選擇 "GitHub Copilot: Sign In"
|
||||
4. 如果彈出授權窗口,點擊授權
|
||||
5. 重新開啟代碼文件
|
||||
|
||||
### Q2:Workspace 啟動失敗
|
||||
|
||||
**症狀:** 狀態停留在 "Provisioning" 或顯示紅色錯誤
|
||||
|
||||
**診斷步驟:**
|
||||
```
|
||||
Dashboard → 選擇 Workspace
|
||||
→ 點擊 "Logs" 分頁
|
||||
→ 查看錯誤信息
|
||||
```
|
||||
|
||||
常見原因:
|
||||
- Docker 資源不足
|
||||
- Coder server 無法連接到 provisioner
|
||||
- startup_script 有語法錯誤
|
||||
|
||||
**解決方案:**
|
||||
- 檢查 Docker 磁碟空間
|
||||
- 重啟 Coder server:`docker-compose restart`
|
||||
- 檢查 `main.tf` 語法
|
||||
|
||||
### Q3:無法保存檔案
|
||||
|
||||
**症狀:** 編輯後 Ctrl+S 無反應,或重啟後檔案遺失
|
||||
|
||||
**檢查步驟:**
|
||||
1. VSCode 左下角應有自動存檔指示
|
||||
2. Settings → 搜尋 "Auto Save" → 確認已啟用
|
||||
3. 檢查磁碟空間是否充足
|
||||
4. 查看 code-server 是否正常運行
|
||||
|
||||
### Q4:如何備份 Workspace 的檔案?
|
||||
|
||||
因為使用 Docker volume,備份方式:
|
||||
|
||||
```bash
|
||||
# 1. 進入 Docker 容器
|
||||
docker exec -it coder /bin/sh
|
||||
|
||||
# 2. 備份 volume(替換 <volume-name>)
|
||||
docker run --rm -v <volume-name>:/data \
|
||||
-v /backup:/backup \
|
||||
alpine tar czf /backup/workspace-backup.tar.gz -C /data .
|
||||
|
||||
# 3. 檔案會存在 /backup 目錄
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📊 資源監控
|
||||
|
||||
在 VSCode 右側 "Workspace" 菜單中,可看到:
|
||||
- **CPU Usage** - 目前 CPU 使用率
|
||||
- **RAM Usage** - 目前 RAM 使用量
|
||||
- **Home Disk** - home 目錄磁碟使用量
|
||||
- **CPU Usage (Host)** - 宿主機 CPU
|
||||
- **Memory Usage (Host)** - 宿主機 RAM
|
||||
|
||||
如果 RAM 接近上限,可以:
|
||||
- 關閉不必要的 extensions
|
||||
- 重啟 Workspace
|
||||
- 聯繫管理員增加資源
|
||||
|
||||
---
|
||||
|
||||
## 🔐 安全性
|
||||
|
||||
- ✅ 所有通訊都通過 HTTPS(由 Nginx 處理)
|
||||
- ✅ GitHub OIDC 認證保護
|
||||
- ✅ 每個使用者的 workspace 完全隔離
|
||||
- ✅ 敏感信息(GitHub token)以環境變數形式傳遞,不儲存
|
||||
|
||||
---
|
||||
|
||||
## 📞 需要幫助?
|
||||
|
||||
1. **查看 Logs** → Dashboard → Workspace → Logs
|
||||
2. **Coder 官方文檔** → https://coder.com/docs
|
||||
3. **code-server 文檔** → https://github.com/coder/code-server
|
||||
4. **聯繫管理員** → 提供 Workspace 名稱和錯誤信息
|
||||
|
||||
---
|
||||
|
||||
## 📝 版本資訊
|
||||
|
||||
- **Coder** v2.0+
|
||||
- **code-server** module ~> 1.0
|
||||
- **jetbrains** module ~> 1.1
|
||||
- **Terraform** 0.13+
|
||||
|
||||
上次更新:2025-11-17
|
||||
@@ -1,65 +1,43 @@
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
coder:
|
||||
image: ghcr.io/coder/coder:latest
|
||||
container_name: coder
|
||||
code-server:
|
||||
image: codercom/code-server:latest
|
||||
container_name: code-server
|
||||
restart: unless-stopped
|
||||
|
||||
|
||||
environment:
|
||||
# === 資料庫 ===
|
||||
CODER_PG_CONNECTION_URL: postgresql://coder:${POSTGRES_PASSWORD}@postgres:5432/coder?sslmode=disable
|
||||
|
||||
# === 外部 URL ===
|
||||
CODER_ACCESS_URL: https://code.karylab.com
|
||||
CODER_WILDCARD_ACCESS_URL: "*.code.karylab.com"
|
||||
|
||||
# === TLS 由 Nginx 處理 ===
|
||||
CODER_TLS_ENABLE: "false"
|
||||
|
||||
# === GitHub OIDC ===
|
||||
CODER_OIDC_ISSUER_URL: https://token.actions.githubusercontent.com
|
||||
CODER_OIDC_CLIENT_ID: ${CODER_OIDC_CLIENT_ID}
|
||||
CODER_OIDC_CLIENT_SECRET: ${CODER_OIDC_CLIENT_SECRET}
|
||||
CODER_OIDC_ALLOW_SIGNUPS: "true"
|
||||
|
||||
CODER_ADDRESS: 0.0.0.0:3000
|
||||
CODER_HOME: /config/coder
|
||||
|
||||
# GitHub OAuth 認證
|
||||
OAUTH_CLIENT_ID: ${OAUTH_CLIENT_ID}
|
||||
OAUTH_CLIENT_SECRET: ${OAUTH_CLIENT_SECRET}
|
||||
OAUTH_AUTHORIZE_URL: https://github.com/login/oauth/authorize
|
||||
OAUTH_TOKEN_URL: https://github.com/login/oauth/access_token
|
||||
OAUTH_USER_ID_TOKEN_CLAIM: login
|
||||
|
||||
volumes:
|
||||
# 使用者 config(.config, .cache, extensions)→ volume
|
||||
- user_config:/config/users
|
||||
# 使用者程式碼 → 宿主實體目錄(bind mount)
|
||||
- /mnt/data/External/code:/projects
|
||||
# Coder 系統設定 → volume
|
||||
- coder_system:/config/coder
|
||||
# 程式碼目錄
|
||||
- /mnt/data/External/code:/home/coder/project
|
||||
# VSCode 設定
|
||||
- code-server-config:/home/coder/.config
|
||||
# 快取
|
||||
- code-server-cache:/home/coder/.cache
|
||||
|
||||
ports:
|
||||
- "6800:8443"
|
||||
|
||||
networks:
|
||||
- coder-net
|
||||
- webproxy # webproxy 網橋
|
||||
depends_on:
|
||||
- postgres
|
||||
|
||||
postgres:
|
||||
image: postgres:15-alpine
|
||||
container_name: coder-postgres
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
POSTGRES_DB: coder
|
||||
POSTGRES_USER: coder
|
||||
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
|
||||
volumes:
|
||||
- postgres_data:/var/lib/postgresql/data
|
||||
networks:
|
||||
- coder-net
|
||||
- webproxy
|
||||
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://localhost:8443"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
|
||||
volumes:
|
||||
user_config: # 所有使用者 .config, .cache
|
||||
coder_system: # Coder 系統設定
|
||||
postgres_data: # 資料庫
|
||||
code-server-config:
|
||||
code-server-cache:
|
||||
|
||||
networks:
|
||||
coder-net:
|
||||
driver: bridge
|
||||
webproxy:
|
||||
external: true #外部網橋
|
||||
external: true
|
||||
Reference in New Issue
Block a user