fix(docker): CRLF entrypoint + Windows Docker Desktop docs

- .gitattributes: force LF for *.sh, docker-entrypoint.sh, Caddyfile*
- docker-entrypoint.sh: normalize to LF
- Caddyfile.example: normalize to LF
- Dockerfile: add sed CRLF strip as defense-in-depth after COPY
- docs/docker.md: add "Local Docker Desktop" section for Windows/macOS

Closes #869
This commit is contained in:
Leex 2026-03-29 09:44:17 +02:00 committed by Rasmus Widing
parent 550c8417e5
commit b739fb667a
3 changed files with 64 additions and 1 deletions

6
.gitattributes vendored
View file

@ -1,2 +1,8 @@
# Auto detect text files and perform LF normalization
* text=auto
# Force LF line endings for files that run inside Linux containers
*.sh text eol=lf
docker-entrypoint.sh text eol=lf
Caddyfile text eol=lf
Caddyfile.example text eol=lf

View file

@ -157,8 +157,10 @@ RUN gosu appuser git config --global --add safe.directory '/.archon/workspaces'
gosu appuser git config --global --add safe.directory '/.archon/worktrees/*'
# Copy entrypoint script (fixes volume permissions, drops to appuser)
# sed strips Windows CRLF in case .gitattributes eol=lf was bypassed
COPY docker-entrypoint.sh /usr/local/bin/
RUN chmod +x /usr/local/bin/docker-entrypoint.sh
RUN sed -i 's/\r$//' /usr/local/bin/docker-entrypoint.sh \
&& chmod +x /usr/local/bin/docker-entrypoint.sh
# Default port (matches .env.example PORT=3000)
EXPOSE 3000

View file

@ -74,6 +74,61 @@ docker compose --profile with-db --profile cloud up -d
---
## Local Docker Desktop (Windows / macOS)
Run Archon locally with Docker Desktop — no domain, no VPS required. Uses SQLite and the Web UI only.
### Quick start
```bash
git clone https://github.com/dynamous-community/remote-coding-agent.git
cd remote-coding-agent
cp .env.example .env
# Edit .env: set CLAUDE_CODE_OAUTH_TOKEN or CLAUDE_API_KEY
docker compose up -d
```
Access the Web UI at **http://localhost:3000**.
### Windows-specific notes
**Build from WSL, not PowerShell.** Docker Desktop on Windows cannot follow Bun workspace symlinks during the build context transfer. If you see `The file cannot be accessed by the system`, open a WSL terminal:
```bash
cd /mnt/c/Users/YourName/path/to/remote-coding-agent
docker compose up -d
```
**Line endings:** The repo uses `.gitattributes` to force LF endings for shell scripts. If you cloned before this was added and see `exec docker-entrypoint.sh: no such file or directory`, re-clone or run:
```bash
git rm --cached -r .
git reset --hard
```
### What you get
| Feature | Status |
|---------|--------|
| Web UI | http://localhost:3000 |
| Database | SQLite (automatic, zero setup) |
| HTTPS / Caddy | Not needed locally |
| Auth | None (single-user, localhost only) |
| Platform adapters | Optional (Telegram, Slack, etc.) |
### Using PostgreSQL locally (optional)
```bash
docker compose --profile with-db up -d
```
Then add to `.env`:
```env
DATABASE_URL=postgresql://postgres:postgres@postgres:5432/remote_coding_agent
```
---
## Manual Server Setup
Step-by-step alternative if you prefer not to use cloud-init, or need more control.