feat: optimize docker compose for dashboard and api (#578)

* chore: use turbo for build

* fix docker compose file and remove backend

* chore: update .dockerignore to include additional files and directories for improved build management

* copy everything in both docke filed

* refactor: streamline Dockerfile to copy entire dashboard app and remove unnecessary node_modules references

* update api to use turbo to start

* run ls la for docker files

* update cmd commands

* update cmds to use node

* fix: add redis url to docker compose

* fix: reduce memory allocation for dashboard build in Dockerfile

* debug dashboard build

* update api docker file

* update dashboard

* add tsconfig

* chore: add echo to dockerfile

* fix: change echo to run

* chore: install pnpm before switching to non-root user in Dockerfile

* refactor: update start commands in package.json and Dockerfiles to use pnpm

* install turbo

* use turbo 1.10.16

* update turbo config

* fix: update CMD in Dockerfile to run the API directly using Node.js

* change

* add commands to turbo.json

* copy over turbo

* add workspace

* fix: update start commands in package.json to specify ports for dashboard and API

* publish docker images

* add dev branch

* update compose

* build only for amd64 platform

* refactor: update docker-compose to use pre-built images and remove build context

* coolify-dockertest

* point to latest

* chore: update docker-compose to use specific version tags for API and dashboard images

* remove envs for docker file

* 0.1.3

* use dynamic env

* 0.1.4

* add PUBLIC_IS_SELFHOSTED=true

* chore: update docker-compose to use version 0.1.5 for API and dashboard images

* use static for PUBLIC_IS_SELFHOSTED

* disable cache for tag

* use 0.1.7

* add PUBLIC_IS_SELFHOSTED=true

* comment out caching

* update docker-compose to use version 0.1.8 for API and dashboard images

* update api port

* use tag 0.1.9

* add cache

* use latest tag in compose file
This commit is contained in:
Rotimi Best
2025-10-11 13:27:50 +01:00
committed by GitHub
parent 27ee51155e
commit 168866c81b
44 changed files with 848 additions and 2388 deletions
+62
View File
@@ -0,0 +1,62 @@
#!/bin/bash
# Docker Hub Push Script for ClassroomIO
# This script builds and pushes the API and Dashboard images to Docker Hub
set -e # Exit on error
# Configuration
DOCKERHUB_USERNAME="${DOCKERHUB_USERNAME:-classroomio}" # Change this to your Docker Hub username
VERSION="${VERSION:-latest}" # Can be overridden with VERSION env var
# Colors for output
GREEN='\033[0;32m'
BLUE='\033[0;34m'
RED='\033[0;31m'
NC='\033[0m' # No Color
echo -e "${BLUE}================================${NC}"
echo -e "${BLUE}ClassroomIO Docker Hub Publisher${NC}"
echo -e "${BLUE}================================${NC}"
echo ""
# Build and push API
echo -e "${GREEN}Building API image...${NC}"
docker build \
-f docker/Dockerfile.api \
-t ${DOCKERHUB_USERNAME}/api:${VERSION} \
-t ${DOCKERHUB_USERNAME}/api:latest \
.
echo -e "${GREEN}Pushing API image to Docker Hub...${NC}"
docker push ${DOCKERHUB_USERNAME}/api:${VERSION}
docker push ${DOCKERHUB_USERNAME}/api:latest
echo -e "${GREEN}✓ API image published successfully!${NC}"
echo ""
# Build and push Dashboard
echo -e "${GREEN}Building Dashboard image...${NC}"
docker build \
-f docker/Dockerfile.dashboard \
-t ${DOCKERHUB_USERNAME}/dashboard:${VERSION} \
-t ${DOCKERHUB_USERNAME}/dashboard:latest \
.
echo -e "${GREEN}Pushing Dashboard image to Docker Hub...${NC}"
docker push ${DOCKERHUB_USERNAME}/dashboard:${VERSION}
docker push ${DOCKERHUB_USERNAME}/dashboard:latest
echo -e "${GREEN}✓ Dashboard image published successfully!${NC}"
# Summary
echo -e "${BLUE}================================${NC}"
echo -e "${GREEN}All images published successfully!${NC}"
echo -e "${BLUE}================================${NC}"
echo ""
echo "API Image: ${DOCKERHUB_USERNAME}/api:${VERSION}"
echo "Dashboard Image: ${DOCKERHUB_USERNAME}/dashboard:${VERSION}"
echo ""
echo "To pull these images:"
echo " docker pull ${DOCKERHUB_USERNAME}/api:${VERSION}"
echo " docker pull ${DOCKERHUB_USERNAME}/dashboard:${VERSION}