mirror of
https://github.com/AutoMaker-Org/automaker.git
synced 2026-02-03 21:03:08 +00:00
Merge pull request #460 from thesobercoder/feature/opencode-docker-support
feat: add OpenCode CLI support in Docker
This commit is contained in:
@@ -102,6 +102,12 @@ RUN curl https://cursor.com/install -fsS | bash && \
|
|||||||
ls -la /home/automaker/.local/bin/ && \
|
ls -la /home/automaker/.local/bin/ && \
|
||||||
echo "=== PATH is: $PATH ===" && \
|
echo "=== PATH is: $PATH ===" && \
|
||||||
(which cursor-agent && cursor-agent --version) || echo "cursor-agent installed (may need auth setup)"
|
(which cursor-agent && cursor-agent --version) || echo "cursor-agent installed (may need auth setup)"
|
||||||
|
|
||||||
|
# Install OpenCode CLI (for multi-provider AI model access)
|
||||||
|
RUN curl -fsSL https://opencode.ai/install | bash && \
|
||||||
|
echo "=== Checking OpenCode CLI installation ===" && \
|
||||||
|
ls -la /home/automaker/.local/bin/ && \
|
||||||
|
(which opencode && opencode --version) || echo "opencode installed (may need auth setup)"
|
||||||
USER root
|
USER root
|
||||||
|
|
||||||
# Add PATH to profile so it's available in all interactive shells (for login shells)
|
# Add PATH to profile so it's available in all interactive shells (for login shells)
|
||||||
|
|||||||
@@ -16,6 +16,11 @@ services:
|
|||||||
# This shares your 'cursor-agent login' OAuth session with the container
|
# This shares your 'cursor-agent login' OAuth session with the container
|
||||||
# - ~/.cursor:/home/automaker/.cursor
|
# - ~/.cursor:/home/automaker/.cursor
|
||||||
|
|
||||||
|
# OpenCode CLI - mount your ~/.local/share/opencode directory
|
||||||
|
# This shares your 'opencode auth login' session with the container
|
||||||
|
# - ~/.local/share/opencode:/home/automaker/.local/share/opencode
|
||||||
|
# - ~/.config/opencode:/home/automaker/.config/opencode
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
# Set root directory for all projects and file operations
|
# Set root directory for all projects and file operations
|
||||||
# Users can only create/open projects within this directory
|
# Users can only create/open projects within this directory
|
||||||
|
|||||||
@@ -83,6 +83,13 @@ services:
|
|||||||
# This allows 'cursor-agent login' authentication to persist between restarts
|
# This allows 'cursor-agent login' authentication to persist between restarts
|
||||||
- automaker-cursor-config:/home/automaker/.cursor
|
- automaker-cursor-config:/home/automaker/.cursor
|
||||||
|
|
||||||
|
# Persist OpenCode CLI configuration and authentication across container restarts
|
||||||
|
# This allows 'opencode auth login' authentication to persist between restarts
|
||||||
|
- automaker-opencode-data:/home/automaker/.local/share/opencode
|
||||||
|
|
||||||
|
# Persist OpenCode user configuration across container restarts
|
||||||
|
- automaker-opencode-config:/home/automaker/.config/opencode
|
||||||
|
|
||||||
# NO host directory mounts - container cannot access your laptop files
|
# NO host directory mounts - container cannot access your laptop files
|
||||||
# If you need to work on a project, create it INSIDE the container
|
# If you need to work on a project, create it INSIDE the container
|
||||||
# or use a separate docker-compose override file
|
# or use a separate docker-compose override file
|
||||||
@@ -106,3 +113,13 @@ volumes:
|
|||||||
name: automaker-cursor-config
|
name: automaker-cursor-config
|
||||||
# Named volume for Cursor CLI configuration and authentication
|
# Named volume for Cursor CLI configuration and authentication
|
||||||
# Persists cursor-agent login authentication across container restarts
|
# Persists cursor-agent login authentication across container restarts
|
||||||
|
|
||||||
|
automaker-opencode-data:
|
||||||
|
name: automaker-opencode-data
|
||||||
|
# Named volume for OpenCode CLI data and authentication (~/.local/share/opencode)
|
||||||
|
# Persists opencode auth login authentication across container restarts
|
||||||
|
|
||||||
|
automaker-opencode-config:
|
||||||
|
name: automaker-opencode-config
|
||||||
|
# Named volume for OpenCode user configuration (~/.config/opencode)
|
||||||
|
# Persists user configuration across container restarts
|
||||||
|
|||||||
@@ -25,6 +25,21 @@ fi
|
|||||||
chown -R automaker:automaker /home/automaker/.cursor
|
chown -R automaker:automaker /home/automaker/.cursor
|
||||||
chmod -R 700 /home/automaker/.cursor
|
chmod -R 700 /home/automaker/.cursor
|
||||||
|
|
||||||
|
# Ensure OpenCode CLI config directory exists with correct permissions
|
||||||
|
# OpenCode stores config and auth in ~/.local/share/opencode/
|
||||||
|
if [ ! -d "/home/automaker/.local/share/opencode" ]; then
|
||||||
|
mkdir -p /home/automaker/.local/share/opencode
|
||||||
|
fi
|
||||||
|
chown -R automaker:automaker /home/automaker/.local/share/opencode
|
||||||
|
chmod -R 700 /home/automaker/.local/share/opencode
|
||||||
|
|
||||||
|
# OpenCode also uses ~/.config/opencode for configuration
|
||||||
|
if [ ! -d "/home/automaker/.config/opencode" ]; then
|
||||||
|
mkdir -p /home/automaker/.config/opencode
|
||||||
|
fi
|
||||||
|
chown -R automaker:automaker /home/automaker/.config/opencode
|
||||||
|
chmod -R 700 /home/automaker/.config/opencode
|
||||||
|
|
||||||
# If CURSOR_AUTH_TOKEN is set, write it to the cursor auth file
|
# If CURSOR_AUTH_TOKEN is set, write it to the cursor auth file
|
||||||
# On Linux, cursor-agent uses ~/.config/cursor/auth.json for file-based credential storage
|
# On Linux, cursor-agent uses ~/.config/cursor/auth.json for file-based credential storage
|
||||||
# The env var CURSOR_AUTH_TOKEN is also checked directly by cursor-agent
|
# The env var CURSOR_AUTH_TOKEN is also checked directly by cursor-agent
|
||||||
|
|||||||
@@ -94,6 +94,16 @@ echo "CURSOR_AUTH_TOKEN=$(./scripts/get-cursor-token.sh)" >> .env
|
|||||||
- **macOS**: Tokens are stored in Keychain (service: `cursor-access-token`)
|
- **macOS**: Tokens are stored in Keychain (service: `cursor-access-token`)
|
||||||
- **Linux**: Tokens are stored in `~/.config/cursor/auth.json` (not `~/.cursor`)
|
- **Linux**: Tokens are stored in `~/.config/cursor/auth.json` (not `~/.cursor`)
|
||||||
|
|
||||||
|
### OpenCode CLI
|
||||||
|
|
||||||
|
OpenCode stores its configuration and auth at `~/.local/share/opencode/`. To share your host authentication with the container:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# In docker-compose.override.yml
|
||||||
|
volumes:
|
||||||
|
- ~/.local/share/opencode:/home/automaker/.local/share/opencode
|
||||||
|
```
|
||||||
|
|
||||||
### Apply to container
|
### Apply to container
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
@@ -121,6 +131,7 @@ echo "CURSOR_AUTH_TOKEN=$(jq -r '.accessToken' ~/.config/cursor/auth.json)" >> .
|
|||||||
volumes:
|
volumes:
|
||||||
- ~/.claude:/home/automaker/.claude
|
- ~/.claude:/home/automaker/.claude
|
||||||
- ~/.config/cursor:/home/automaker/.config/cursor
|
- ~/.config/cursor:/home/automaker/.config/cursor
|
||||||
|
- ~/.local/share/opencode:/home/automaker/.local/share/opencode
|
||||||
```
|
```
|
||||||
|
|
||||||
## Troubleshooting
|
## Troubleshooting
|
||||||
@@ -131,4 +142,6 @@ volumes:
|
|||||||
| Can't access web UI | Verify container is running with `docker ps \| grep automaker` |
|
| Can't access web UI | Verify container is running with `docker ps \| grep automaker` |
|
||||||
| Need a fresh start | Run `docker-compose down && docker volume rm automaker-data && docker-compose up -d --build` |
|
| Need a fresh start | Run `docker-compose down && docker volume rm automaker-data && docker-compose up -d --build` |
|
||||||
| Cursor auth fails | Re-extract token with `./scripts/get-cursor-token.sh` - tokens expire periodically. Make sure you've run `cursor-agent login` on your host first. |
|
| Cursor auth fails | Re-extract token with `./scripts/get-cursor-token.sh` - tokens expire periodically. Make sure you've run `cursor-agent login` on your host first. |
|
||||||
|
| OpenCode not detected | Mount `~/.local/share/opencode` to `/home/automaker/.local/share/opencode`. Make sure you've run `opencode auth login` on your host first. |
|
||||||
| File permission errors | Rebuild with `UID=$(id -u) GID=$(id -g) docker-compose build` to match container user to your host user. See [Fixing File Permission Issues](#fixing-file-permission-issues). |
|
| File permission errors | Rebuild with `UID=$(id -u) GID=$(id -g) docker-compose build` to match container user to your host user. See [Fixing File Permission Issues](#fixing-file-permission-issues). |
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user