@@ -85,6 +85,15 @@ make dev
8585| ` make lint ` | Run golangci-lint |
8686| ` make ready ` | Run all checks (test-short, test-race, fmt, lint, align) |
8787
88+ ### Docker Commands
89+
90+ | Command | Description |
91+ | ---------| -------------|
92+ | ` make docker-build-local ` | Build Docker image locally for amd64 (no goreleaser required) |
93+ | ` make docker-build-local-arm64 ` | Build Docker image locally for ARM64 (no goreleaser required) |
94+ | ` make docker-build ` | Build Docker image with goreleaser (requires goreleaser installed) |
95+ | ` make docker-run ` | Run Docker image with local config (amd64) |
96+
8897## Configuration
8998
9099### Development Config
@@ -183,6 +192,57 @@ Run with hot reload:
183192air
184193```
185194
195+ ## Docker Development
196+
197+ ### Building Docker Images Locally
198+
199+ You can build Docker images without requiring [ goreleaser] ( https://goreleaser.com/ ) :
200+
201+ #### AMD64 (Intel/most systems)
202+
203+ ``` bash
204+ make docker-build-local
205+ # Produces: ghcr.io/thushan/olla:local-amd64
206+ ```
207+
208+ #### ARM64 (Apple Silicon, Raspberry Pi, ARM servers)
209+
210+ ``` bash
211+ make docker-build-local-arm64
212+ # Produces: ghcr.io/thushan/olla:local-arm64
213+ ```
214+
215+ #### Custom architecture
216+
217+ ``` bash
218+ make docker-build-local DOCKER_ARCH=arm64
219+ # Produces: ghcr.io/thushan/olla:local-arm64
220+ ```
221+
222+ If you have goreleaser installed, use the full release build:
223+
224+ ``` bash
225+ # Full goreleaser build with all platforms and tags
226+ make docker-build
227+ ```
228+
229+ ### Running the Docker Image
230+
231+ ``` bash
232+ # Run the locally built image
233+ docker run -p 40114:40114 \
234+ -v " $( pwd) /config/config.local.yaml:/config/config.yaml:ro" \
235+ -e OLLA_CONFIG_FILE=/config/config.yaml \
236+ ghcr.io/thushan/olla:local
237+
238+ # Or use the convenience make target
239+ make docker-run
240+ ```
241+
242+ !!! warning "Docker Network Configuration"
243+
244+ When running Olla in Docker, ensure your config has `server.host: 0.0.0.0` (not `localhost`). Inside the container, `localhost` binds to the loopback interface and won't be accessible from the host machine, even with published ports (`-p 40114:40114`). Use `0.0.0.0` to listen on all interfaces.
245+
186246## IDE Configuration
187247
188248### VS Code
0 commit comments