77 lines
2.3 KiB
Markdown
77 lines
2.3 KiB
Markdown
# Docker Development Tasks
|
|
|
|
Quick reference for Docker container management during development.
|
|
|
|
## Available VS Code Tasks
|
|
|
|
### Build & Run Local Docker
|
|
**Command:** `Build & Run Local Docker`
|
|
- Builds the Docker image from scratch with current code
|
|
- Tags as `charon:local`
|
|
- Starts container with docker-compose.local.yml
|
|
- **Use when:** You've made backend code changes that need recompiling
|
|
|
|
### Docker: Restart Local (No Rebuild) ⚡
|
|
**Command:** `Docker: Restart Local (No Rebuild)`
|
|
- Stops the running container
|
|
- Starts it back up using existing image
|
|
- **Use when:** You've changed volume mounts, environment variables, or want to clear runtime state
|
|
- **Fastest option** for testing volume mount changes
|
|
|
|
### Docker: Stop Local
|
|
**Command:** `Docker: Stop Local`
|
|
- Stops and removes the running container
|
|
- Preserves volumes and image
|
|
- **Use when:** You need to stop the container temporarily
|
|
|
|
### Docker: Start Local (Already Built)
|
|
**Command:** `Docker: Start Local (Already Built)`
|
|
- Starts container from existing image
|
|
- **Use when:** Container is stopped but image is built
|
|
|
|
## Manual Commands
|
|
|
|
```bash
|
|
# Build and run (full rebuild)
|
|
docker build --build-arg VCS_REF=$(git rev-parse HEAD) -t charon:local . && \
|
|
docker compose -f docker-compose.local.yml up -d
|
|
|
|
# Quick restart (no rebuild) - FASTEST for volume mount testing
|
|
docker compose -f docker-compose.local.yml down && \
|
|
docker compose -f docker-compose.local.yml up -d
|
|
|
|
# View logs
|
|
docker logs -f charon-debug
|
|
|
|
# Stop container
|
|
docker compose -f docker-compose.local.yml down
|
|
|
|
# Start existing container
|
|
docker compose -f docker-compose.local.yml up -d
|
|
```
|
|
|
|
## Testing Import Feature
|
|
|
|
The import feature uses a mounted Caddyfile at `/import/Caddyfile` inside the container.
|
|
|
|
**Volume mount in docker-compose.local.yml:**
|
|
```yaml
|
|
- /root/docker/containers/caddy/Caddyfile:/import/Caddyfile:ro
|
|
- /root/docker/containers/caddy/sites:/import/sites:ro
|
|
```
|
|
|
|
**To test import with different Caddyfiles:**
|
|
1. Edit `/root/docker/containers/caddy/Caddyfile` on the host
|
|
2. Run task: `Docker: Restart Local (No Rebuild)` ⚡
|
|
3. Check GUI - import should detect the mounted Caddyfile
|
|
4. No rebuild needed!
|
|
|
|
## Coverage Requirement
|
|
|
|
All code changes must maintain **≥80% test coverage**.
|
|
|
|
Run coverage check:
|
|
```bash
|
|
cd backend && bash ../scripts/go-test-coverage.sh
|
|
```
|