refactor: update Docker integration and build process

- Modified docker-compose.yml to allow overriding the image with the MESHCHAT_IMAGE environment variable.
- Enhanced Makefile with new build-docker and run-docker targets for streamlined Docker image creation and execution.
- Updated README.md to reflect changes in Docker build and run commands, providing clearer instructions for users.
This commit is contained in:
2025-12-01 11:30:07 -06:00
parent c98131f76b
commit a0047ea8fb
3 changed files with 40 additions and 3 deletions

View File

@@ -1,9 +1,19 @@
.PHONY: install run develop clean build build-appimage build-exe dist sync-version wheel node_modules python .PHONY: install run develop clean build build-appimage build-exe dist sync-version wheel node_modules python build-docker run-docker
PYTHON ?= python PYTHON ?= python
POETRY = $(PYTHON) -m poetry POETRY = $(PYTHON) -m poetry
NPM = npm NPM = npm
DOCKER_COMPOSE_CMD ?= docker compose
DOCKER_COMPOSE_FILE ?= docker-compose.yml
DOCKER_IMAGE ?= reticulum-meshchatx:local
DOCKER_BUILDER ?= meshchatx-builder
DOCKER_PLATFORMS ?= linux/amd64
DOCKER_BUILD_FLAGS ?= --load
DOCKER_BUILD_ARGS ?=
DOCKER_CONTEXT ?= .
DOCKERFILE ?= Dockerfile
install: sync-version node_modules python install: sync-version node_modules python
node_modules: node_modules:
@@ -43,3 +53,20 @@ clean:
sync-version: sync-version:
$(PYTHON) scripts/sync_version.py $(PYTHON) scripts/sync_version.py
build-docker:
@if ! docker buildx inspect $(DOCKER_BUILDER) >/dev/null 2>&1; then \
docker buildx create --name $(DOCKER_BUILDER) --use >/dev/null; \
else \
docker buildx use $(DOCKER_BUILDER); \
fi
docker buildx build --builder $(DOCKER_BUILDER) --platform $(DOCKER_PLATFORMS) \
$(DOCKER_BUILD_FLAGS) \
-t $(DOCKER_IMAGE) \
$(DOCKER_BUILD_ARGS) \
-f $(DOCKERFILE) \
$(DOCKER_CONTEXT)
run-docker:
MESHCHAT_IMAGE="$(DOCKER_IMAGE)" \
$(DOCKER_COMPOSE_CMD) -f $(DOCKER_COMPOSE_FILE) up --remove-orphans --pull never reticulum-meshchatx

View File

@@ -55,9 +55,19 @@ The wheel includes the frontend `public/` assets, `logo/`, and the CLI entry poi
### Building in Docker ### Building in Docker
```bash ```bash
make docker-build make build-docker
``` ```
`build-docker` creates `reticulum-meshchatx:local` (or `$(DOCKER_IMAGE)` if you override it) via `docker buildx`. Set `DOCKER_PLATFORMS` to `linux/amd64,linux/arm64` when you need multi-arch images, and adjust `DOCKER_BUILD_FLAGS`/`DOCKER_BUILD_ARGS` to control `--load`/`--push`.
### Running with Docker Compose
```bash
make run-docker
```
`run-docker` feeds the locally-built image into `docker compose -f docker-compose.yml up --remove-orphans --pull never reticulum-meshchatx`. The compose file uses the `MESHCHAT_IMAGE` env var so you can override the target image without editing the YAML (the default still points at `ghcr.io/sudo-ivan/reticulum-meshchatx:latest`). Use `docker compose down` or `Ctrl+C` to stop the container.
The Electron build artifacts will still live under `dist/` for releases. The Electron build artifacts will still live under `dist/` for releases.
## Python packaging ## Python packaging

View File

@@ -1,7 +1,7 @@
services: services:
reticulum-meshchatx: reticulum-meshchatx:
container_name: reticulum-meshchatx container_name: reticulum-meshchatx
image: ghcr.io/sudo-ivan/reticulum-meshchatx:latest image: ${MESHCHAT_IMAGE:-ghcr.io/sudo-ivan/reticulum-meshchatx:latest}
pull_policy: always pull_policy: always
restart: unless-stopped restart: unless-stopped
# Make the meshchat web interface accessible from the host on port 8000 # Make the meshchat web interface accessible from the host on port 8000