Skip to content

Commit a5c8179

Browse files
imguoguoclaude
andauthored
chore(docker): reorganize docker files and add first-run entrypoint (#812)
* chore(docker): move Dockerfile into docker/ directory Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * feat(docker): add entrypoint script to goreleaser Dockerfile - entrypoint.sh: on first run (config and workspace both absent) runs picoclaw onboard then exits for the user to configure; subsequent starts exec picoclaw gateway directly - Dockerfile.goreleaser: copy and use entrypoint.sh, run as root - .goreleaser.yaml: update dockerfile path, add entrypoint.sh to extra_files so it is included in the docker build context Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * chore(docker): update docker-compose to use pre-built image and bind mount - Use docker.io/sipeed/picoclaw:latest instead of building locally - Replace named volume with bind mount ./data:/root/.picoclaw - Move docker-compose.yml into docker/ directory Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * docs: update Docker Compose section to reflect new docker/ layout - Use docker compose -f docker/docker-compose.yml for all commands - Update setup flow: first run generates docker/data/config.json, container exits, user edits config, then restarts - Replace "Rebuild" section with "Update" (docker pull) since the compose file now uses the pre-built sipeed/picoclaw image - Apply same changes to README.zh.md Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(docker): use restart: on-failure to prevent restart after first-run setup unless-stopped restarts the container regardless of exit code, causing an infinite loop when entrypoint exits 0 after the initial onboard. on-failure only restarts on non-zero exit (i.e. crashes), so the container stays stopped after setup until the user restarts it manually. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * docs: sync Docker Compose section across all language READMEs Apply the same updates as the English/Chinese READMEs: - Use docker compose -f docker/docker-compose.yml for all commands - Update setup flow to first-run auto-config pattern - Replace build/rebuild section with update via docker pull - Affected: README.fr.md, README.ja.md, README.pt-br.md, README.vi.md Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 3584c0c commit a5c8179

File tree

11 files changed

+144
-115
lines changed

11 files changed

+144
-115
lines changed

.goreleaser.yaml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,9 @@ builds:
3939

4040
dockers_v2:
4141
- id: picoclaw
42-
dockerfile: Dockerfile.goreleaser
42+
dockerfile: docker/Dockerfile.goreleaser
43+
extra_files:
44+
- docker/entrypoint.sh
4345
ids:
4446
- picoclaw
4547
images:

README.fr.md

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -164,39 +164,43 @@ Vous pouvez également exécuter PicoClaw avec Docker Compose sans rien installe
164164
git clone https://github.com/sipeed/picoclaw.git
165165
cd picoclaw
166166

167-
# 2. Configurez vos clés API
168-
cp config/config.example.json config/config.json
169-
vim config/config.json # Configurez DISCORD_BOT_TOKEN, clés API, etc.
167+
# 2. Premier lancement — génère docker/data/config.json puis s'arrête
168+
docker compose -f docker/docker-compose.yml --profile gateway up
169+
# Le conteneur affiche "First-run setup complete." puis s'arrête.
170170

171-
# 3. Compiler & Démarrer
172-
docker compose --profile gateway up -d
171+
# 3. Configurez vos clés API
172+
vim docker/data/config.json # Clés API du fournisseur, tokens de bot, etc.
173+
174+
# 4. Démarrer
175+
docker compose -f docker/docker-compose.yml --profile gateway up -d
176+
```
173177

174178
> [!TIP]
175179
> **Utilisateurs Docker** : Par défaut, le Gateway écoute sur `127.0.0.1`, ce qui n'est pas accessible depuis l'hôte. Si vous avez besoin d'accéder aux endpoints de santé ou d'exposer des ports, définissez `PICOCLAW_GATEWAY_HOST=0.0.0.0` dans votre environnement ou mettez à jour `config.json`.
176180
181+
```bash
182+
# 5. Voir les logs
183+
docker compose -f docker/docker-compose.yml logs -f picoclaw-gateway
177184

178-
# 4. Voir les logs
179-
docker compose logs -f picoclaw-gateway
180-
181-
# 5. Arrêter
182-
docker compose --profile gateway down
185+
# 6. Arrêter
186+
docker compose -f docker/docker-compose.yml --profile gateway down
183187
```
184188

185189
### Mode Agent (exécution unique)
186190

187191
```bash
188192
# Poser une question
189-
docker compose run --rm picoclaw-agent -m "Combien font 2+2 ?"
193+
docker compose -f docker/docker-compose.yml run --rm picoclaw-agent -m "Combien font 2+2 ?"
190194

191195
# Mode interactif
192-
docker compose run --rm picoclaw-agent
196+
docker compose -f docker/docker-compose.yml run --rm picoclaw-agent
193197
```
194198

195-
### Recompiler
199+
### Mettre à jour
196200

197201
```bash
198-
docker compose --profile gateway build --no-cache
199-
docker compose --profile gateway up -d
202+
docker compose -f docker/docker-compose.yml pull
203+
docker compose -f docker/docker-compose.yml --profile gateway up -d
200204
```
201205

202206
### 🚀 Démarrage Rapide

README.ja.md

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -126,39 +126,43 @@ Docker Compose を使えば、ローカルにインストールせずに PicoCla
126126
git clone https://github.com/sipeed/picoclaw.git
127127
cd picoclaw
128128

129-
# 2. API キーを設定
130-
cp config/config.example.json config/config.json
131-
vim config/config.json # DISCORD_BOT_TOKEN, プロバイダーの API キーを設定
129+
# 2. 初回起動 — docker/data/config.json を自動生成して終了
130+
docker compose -f docker/docker-compose.yml --profile gateway up
131+
# コンテナが "First-run setup complete." を表示して停止します。
132132

133-
# 3. ビルドと起動
134-
docker compose --profile gateway up -d
133+
# 3. API キーを設定
134+
vim docker/data/config.json # プロバイダー API キー、Bot トークンなどを設定
135+
136+
# 4. 起動
137+
docker compose -f docker/docker-compose.yml --profile gateway up -d
138+
```
135139

136140
> [!TIP]
137141
> **Docker ユーザー**: デフォルトでは、Gateway は `127.0.0.1` でリッスンしており、ホストからアクセスできません。ヘルスチェックエンドポイントにアクセスしたり、ポートを公開したりする必要がある場合は、環境変数で `PICOCLAW_GATEWAY_HOST=0.0.0.0` を設定するか、`config.json` を更新してください。
138142
143+
```bash
144+
# 5. ログ確認
145+
docker compose -f docker/docker-compose.yml logs -f picoclaw-gateway
139146

140-
# 4. ログ確認
141-
docker compose logs -f picoclaw-gateway
142-
143-
# 5. 停止
144-
docker compose --profile gateway down
147+
# 6. 停止
148+
docker compose -f docker/docker-compose.yml --profile gateway down
145149
```
146150

147151
### Agent モード(ワンショット)
148152

149153
```bash
150154
# 質問を投げる
151-
docker compose run --rm picoclaw-agent -m "What is 2+2?"
155+
docker compose -f docker/docker-compose.yml run --rm picoclaw-agent -m "What is 2+2?"
152156

153157
# インタラクティブモード
154-
docker compose run --rm picoclaw-agent
158+
docker compose -f docker/docker-compose.yml run --rm picoclaw-agent
155159
```
156160

157-
### リビルド
161+
### アップデート
158162

159163
```bash
160-
docker compose --profile gateway build --no-cache
161-
docker compose --profile gateway up -d
164+
docker compose -f docker/docker-compose.yml pull
165+
docker compose -f docker/docker-compose.yml --profile gateway up -d
162166
```
163167

164168
### 🚀 クイックスタート(ネイティブ)

README.md

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -167,39 +167,43 @@ You can also run PicoClaw using Docker Compose without installing anything local
167167
git clone https://github.com/sipeed/picoclaw.git
168168
cd picoclaw
169169

170-
# 2. Set your API keys
171-
cp config/config.example.json config/config.json
172-
vim config/config.json # Set DISCORD_BOT_TOKEN, API keys, etc.
170+
# 2. First run — auto-generates docker/data/config.json then exits
171+
docker compose -f docker/docker-compose.yml --profile gateway up
172+
# The container prints "First-run setup complete." and stops.
173173

174-
# 3. Build & Start
175-
docker compose --profile gateway up -d
174+
# 3. Set your API keys
175+
vim docker/data/config.json # Set provider API keys, bot tokens, etc.
176+
177+
# 4. Start
178+
docker compose -f docker/docker-compose.yml --profile gateway up -d
179+
```
176180

177181
> [!TIP]
178182
> **Docker Users**: By default, the Gateway listens on `127.0.0.1` which is not accessible from the host. If you need to access the health endpoints or expose ports, set `PICOCLAW_GATEWAY_HOST=0.0.0.0` in your environment or update `config.json`.
179183
184+
```bash
185+
# 5. Check logs
186+
docker compose -f docker/docker-compose.yml logs -f picoclaw-gateway
180187

181-
# 4. Check logs
182-
docker compose logs -f picoclaw-gateway
183-
184-
# 5. Stop
185-
docker compose --profile gateway down
188+
# 6. Stop
189+
docker compose -f docker/docker-compose.yml --profile gateway down
186190
```
187191

188192
### Agent Mode (One-shot)
189193

190194
```bash
191195
# Ask a question
192-
docker compose run --rm picoclaw-agent -m "What is 2+2?"
196+
docker compose -f docker/docker-compose.yml run --rm picoclaw-agent -m "What is 2+2?"
193197

194198
# Interactive mode
195-
docker compose run --rm picoclaw-agent
199+
docker compose -f docker/docker-compose.yml run --rm picoclaw-agent
196200
```
197201

198-
### Rebuild
202+
### Update
199203

200204
```bash
201-
docker compose --profile gateway build --no-cache
202-
docker compose --profile gateway up -d
205+
docker compose -f docker/docker-compose.yml pull
206+
docker compose -f docker/docker-compose.yml --profile gateway up -d
203207
```
204208

205209
### 🚀 Quick Start

README.pt-br.md

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -165,39 +165,43 @@ Você tambêm pode rodar o PicoClaw usando Docker Compose sem instalar nada loca
165165
git clone https://github.com/sipeed/picoclaw.git
166166
cd picoclaw
167167

168-
# 2. Configure suas API keys
169-
cp config/config.example.json config/config.json
170-
vim config/config.json # Configure DISCORD_BOT_TOKEN, API keys, etc.
168+
# 2. Primeiro uso — gera docker/data/config.json automaticamente e para
169+
docker compose -f docker/docker-compose.yml --profile gateway up
170+
# O contêiner exibe "First-run setup complete." e para.
171171

172-
# 3. Build & Iniciar
173-
docker compose --profile gateway up -d
172+
# 3. Configure suas API keys
173+
vim docker/data/config.json # Chaves de API do provedor, tokens de bot, etc.
174+
175+
# 4. Iniciar
176+
docker compose -f docker/docker-compose.yml --profile gateway up -d
177+
```
174178

175179
> [!TIP]
176180
> **Usuários Docker**: Por padrão, o Gateway ouve em `127.0.0.1`, o que não é acessível a partir do host. Se você precisar acessar os endpoints de integridade ou expor portas, defina `PICOCLAW_GATEWAY_HOST=0.0.0.0` em seu ambiente ou atualize o `config.json`.
177181
182+
```bash
183+
# 5. Ver logs
184+
docker compose -f docker/docker-compose.yml logs -f picoclaw-gateway
178185

179-
# 4. Ver logs
180-
docker compose logs -f picoclaw-gateway
181-
182-
# 5. Parar
183-
docker compose --profile gateway down
186+
# 6. Parar
187+
docker compose -f docker/docker-compose.yml --profile gateway down
184188
```
185189

186190
### Modo Agente (Execução única)
187191

188192
```bash
189193
# Fazer uma pergunta
190-
docker compose run --rm picoclaw-agent -m "Quanto e 2+2?"
194+
docker compose -f docker/docker-compose.yml run --rm picoclaw-agent -m "Quanto e 2+2?"
191195

192196
# Modo interativo
193-
docker compose run --rm picoclaw-agent
197+
docker compose -f docker/docker-compose.yml run --rm picoclaw-agent
194198
```
195199

196-
### Rebuild
200+
### Atualizar
197201

198202
```bash
199-
docker compose --profile gateway build --no-cache
200-
docker compose --profile gateway up -d
203+
docker compose -f docker/docker-compose.yml pull
204+
docker compose -f docker/docker-compose.yml --profile gateway up -d
201205
```
202206

203207
### 🚀 Início Rápido

README.vi.md

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -145,39 +145,43 @@ Bạn cũng có thể chạy PicoClaw bằng Docker Compose mà không cần cà
145145
git clone https://github.com/sipeed/picoclaw.git
146146
cd picoclaw
147147

148-
# 2. Thiết lập API Key
149-
cp config/config.example.json config/config.json
150-
vim config/config.json # Thiết lập DISCORD_BOT_TOKEN, API keys, v.v.
148+
# 2. Lần chạy đầu tiên — tự tạo docker/data/config.json rồi dừng lại
149+
docker compose -f docker/docker-compose.yml --profile gateway up
150+
# Container hiển thị "First-run setup complete." rồi tự dừng.
151151

152-
# 3. Build & Khởi động
153-
docker compose --profile gateway up -d
152+
# 3. Thiết lập API Key
153+
vim docker/data/config.json # API key của provider, bot token, v.v.
154+
155+
# 4. Khởi động
156+
docker compose -f docker/docker-compose.yml --profile gateway up -d
157+
```
154158

155159
> [!TIP]
156160
> **Người dùng Docker**: Theo mặc định, Gateway lắng nghe trên `127.0.0.1`, không thể truy cập từ máy chủ. Nếu bạn cần truy cập các endpoint kiểm tra sức khỏe hoặc mở cổng, hãy đặt `PICOCLAW_GATEWAY_HOST=0.0.0.0` trong môi trường của bạn hoặc cập nhật `config.json`.
157161
162+
```bash
163+
# 5. Xem logs
164+
docker compose -f docker/docker-compose.yml logs -f picoclaw-gateway
158165

159-
# 4. Xem logs
160-
docker compose logs -f picoclaw-gateway
161-
162-
# 5. Dừng
163-
docker compose --profile gateway down
166+
# 6. Dừng
167+
docker compose -f docker/docker-compose.yml --profile gateway down
164168
```
165169

166170
### Chế độ Agent (chạy một lần)
167171

168172
```bash
169173
# Đặt câu hỏi
170-
docker compose run --rm picoclaw-agent -m "2+2 bằng mấy?"
174+
docker compose -f docker/docker-compose.yml run --rm picoclaw-agent -m "2+2 bằng mấy?"
171175

172176
# Chế độ tương tác
173-
docker compose run --rm picoclaw-agent
177+
docker compose -f docker/docker-compose.yml run --rm picoclaw-agent
174178
```
175179

176-
### Build lại
180+
### Cập nhật
177181

178182
```bash
179-
docker compose --profile gateway build --no-cache
180-
docker compose --profile gateway up -d
183+
docker compose -f docker/docker-compose.yml pull
184+
docker compose -f docker/docker-compose.yml --profile gateway up -d
181185
```
182186

183187
### 🚀 Bắt đầu nhanh

README.zh.md

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -166,41 +166,43 @@ make install
166166
git clone https://github.com/sipeed/picoclaw.git
167167
cd picoclaw
168168

169-
# 2. 设置 API Key
170-
cp config/config.example.json config/config.json
171-
vim config/config.json # 设置 DISCORD_BOT_TOKEN, API keys 等
169+
# 2. 首次运行 — 自动生成 docker/data/config.json 后退出
170+
docker compose -f docker/docker-compose.yml --profile gateway up
171+
# 容器打印 "First-run setup complete." 后自动停止
172172

173-
# 3. 构建并启动
174-
docker compose --profile gateway up -d
173+
# 3. 填写 API Key 等配置
174+
vim docker/data/config.json # 设置 provider API key、Bot Token 等
175175

176-
> [!TIP]
177-
**Docker 用户**: 默认情况下, Gateway监听 `127.0.0.1`,这使得这个端口未暴露到容器外。如果你需要通过端口映射访问健康检查接口, 请在环境变量中设置 `PICOCLAW_GATEWAY_HOST=0.0.0.0` 或修改 `config.json`
176+
# 4. 正式启动
177+
docker compose -f docker/docker-compose.yml --profile gateway up -d
178+
```
178179

179-
# 4. 查看日志
180-
docker compose logs -f picoclaw-gateway
180+
> [!TIP]
181+
> **Docker 用户**: 默认情况下, Gateway 监听 `127.0.0.1`,该端口不会暴露到容器外。如果需要通过端口映射访问健康检查接口,请在环境变量中设置 `PICOCLAW_GATEWAY_HOST=0.0.0.0` 或修改 `config.json`
181182
182-
# 5. 停止
183-
docker compose --profile gateway down
183+
```bash
184+
# 5. 查看日志
185+
docker compose -f docker/docker-compose.yml logs -f picoclaw-gateway
184186

187+
# 6. 停止
188+
docker compose -f docker/docker-compose.yml --profile gateway down
185189
```
186190

187191
### Agent 模式 (一次性运行)
188192

189193
```bash
190194
# 提问
191-
docker compose run --rm picoclaw-agent -m "2+2 等于几?"
195+
docker compose -f docker/docker-compose.yml run --rm picoclaw-agent -m "2+2 等于几?"
192196

193197
# 交互模式
194-
docker compose run --rm picoclaw-agent
195-
198+
docker compose -f docker/docker-compose.yml run --rm picoclaw-agent
196199
```
197200

198-
### 重新构建
201+
### 更新镜像
199202

200203
```bash
201-
docker compose --profile gateway build --no-cache
202-
docker compose --profile gateway up -d
203-
204+
docker compose -f docker/docker-compose.yml pull
205+
docker compose -f docker/docker-compose.yml --profile gateway up -d
204206
```
205207

206208
### 🚀 快速开始
File renamed without changes.
Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ ARG TARGETPLATFORM
55
RUN apk add --no-cache ca-certificates tzdata
66

77
COPY $TARGETPLATFORM/picoclaw /usr/local/bin/picoclaw
8+
COPY docker/entrypoint.sh /entrypoint.sh
89

9-
ENTRYPOINT ["picoclaw"]
10-
CMD ["gateway"]
10+
RUN chmod +x /entrypoint.sh
11+
12+
ENTRYPOINT ["/entrypoint.sh"]

0 commit comments

Comments
 (0)