louislam / dockge

A fancy, easy-to-use and reactive self-hosted docker compose.yaml stack-oriented manager
https://dockge.kuma.pet
MIT License
13.13k stars 375 forks source link

Build frontend during docker build #634

Open Jamie- opened 1 month ago

Jamie- commented 1 month ago

Description

I guess this could be viewed as a bug fix. Today it's not possible to build the Dockge container locally and have a working installation as /app/frontend-dist will be missing from the resulting image. I'm suspect that when Dockge currently is built for distribution to Docker Hub, the frontend is built separately, outside the docker environment, but this requires a nodejs development environment and also is less controlled than building inside the docker environment (like the health check for example).

This PR adds an extra build stage in the main Dockerfile to build the frontend and then copies this into the final image. It also adds the build directive into compose.yaml so that docker compose build works.

This does not change any of the existing default behaviour. On a fresh system, docker compose up will pull from Docker Hub as before, this just supports the option to build the container locally.

Steps for a full local build, from a system with just docker installed and the repo cloned:

docker build -t louislam/dockge:build-healthcheck -f docker/BuildHealthCheck.Dockerfile .
docker build -t louislam/dockge:base -f docker/Base.Dockerfile .
docker compose build

This fix is particularly useful to forked repos and for local development.

Type of change

Please delete any options that are not relevant.

Checklist

Screenshots (if any)

Output from docker compose up on a fresh system with these changes: containers-from-dockerhub.txt.

Output from the build steps as noted above on a fresh system with these changes: local-docker-build.txt.