diff --git a/Dockerfile b/Dockerfile index b6fd274..564ea58 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM node:20.11.1-buster +FROM node:20.15.0-buster WORKDIR / @@ -15,51 +15,27 @@ WORKDIR /eCourse/ui - -RUN sed -i 's/^VITE_DEV_PB_URL=.*/VITE_DEV_PB_URL=http\/\/127.0.0.1:90\/' .env -RUN sed -i 's/^VITE_PROD_PB_URL=.*/VITE_PROD_PB_URL=http\/\/127.0.0.1:80\/' .env +RUN sed -i 's/^VITE_DEV_PB_URL=.*/VITE_DEV_PB_URL=http:\/\/127.0.0.1:90/' .env +RUN sed -i 's/^VITE_PROD_PB_URL=.*/VITE_PROD_PB_URL=http:\/\/127.0.0.1:80/' .env RUN npm install RUN npm run build RUN mv dist/* /eCourse/pb/pb_public # Creating Executer -RUN touch /eCourse/pb/runner.sh +COPY ./runner.sh /eCourse/pb/runner.sh RUN chmod +x /eCourse/pb/runner.sh -ENV DEV_PB_URL="http:\/\/127.0.0.1:90\/" -ENV PROD_PB_URL="http:\/\/127.0.0.1:80\/" -ENV PB_SERVE_HOST=0.0.0.0 +ENV DEV_PB_URL="http://127.0.0.1:90" +ENV PROD_PB_URL="http://127.0.0.1:80" +ENV PB_SERVE_HOST="0.0.0.0" ENV PB_SERVE_PORT=80 -RUN <<>>END > /eCourse/pb/runner.sh +ENV COURSE_LOGO="/logo.svg" +ENV COURSE_LOGO_SIZE="120" +ENV COURSE_NAME="E-Course" +ENV COURSE_COLOR_MAIN="#158a8a" +ENV COURSE_COLOR_DARK="#040D12" +ENV COURSE_COPYRIGHT="Copyright © $(date %YYYY) eCourse" EXPOSE 80 90 -CMD ["/eCourse/pb/runner.sh"] \ No newline at end of file +CMD /eCourse/pb/runner.sh \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..7c125c7 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,17 @@ +version: '3.8' + +services: + tlcd96-ecourse: + container_name: tlcd96-ecourse + image: tlcd96/ecourse:latest +# volumes: +# - /var/composer/ecourse/data:/eCourse/pb/pb_data + ports: + - "80:80" + environment: +# - DEV_PB_URL=http://dev.ecourse.localhost + - PROD_PB_URL=http://ecourse.localhost +# - PB_SERVE_HOST=0.0.0.0 +# - PB_SERVE_PORT=80 + - DEBUG=1 +# - FORCE_REBUILD=1 \ No newline at end of file diff --git a/runner.sh b/runner.sh new file mode 100644 index 0000000..9369cac --- /dev/null +++ b/runner.sh @@ -0,0 +1,119 @@ +#!/bin/bash + +cd /eCourse/ui + +source .env + +rebuild_web="0"; + +eCourseTD=$(date '+%Y-%m-%d %H:%M:%S'); +update_time(){ + # put current date as yyyy-mm-dd HH:MM:SS in $date + eCourseTD=$(date '+%Y-%m-%d %H:%M:%S'); +} +command(){ + echo "└─ $1" +} +debug_run(){ + if [[ "$DEBUG" == "1" ]]; then + echo "running command $1"; + fi + $1 2>&1; +} 2>&1; +if [[ "${FORCE_REBUILD}" == "1" ]]; then + rebuild_web="1" + echo "Force Re-Build" +fi + +echo "DEBUG = ${DEBUG}" + +if [[ "${DEBUG}" == "" || "${DEBUG}" == "0" ]]; then + echo "Debug Not Enabled, Use Enviorment Variable 'DEBUG' with value '1' to enable it" +fi + +if [[ "$DEBUG" == "1" ]]; then + echo "";echo ""; + echo "DEBUG:" + echo "### Vars Info:" + echo "";echo ""; + echo "VITE_DEV_PB_URL = ${VITE_DEV_PB_URL}" + echo "DEV_PB_URL = ${DEV_PB_URL}" + echo "VITE_PROD_PB_URL = ${VITE_PROD_PB_URL}" + echo "PROD_PB_URL = ${PROD_PB_URL}" +fi; + +if [[ "${DEV_PB_URL}" == "" && "${VITE_DEV_PB_URL}" == "" ]]; then + DEV_PB_URL="http://127.0.0.1:90" +fi + +if [[ "${VITE_DEV_PB_URL}" != "${DEV_PB_URL}" ]]; then + sed -i 's/^VITE_DEV_PB_URL=.*/VITE_DEV_PB_URL=${DEV_PB_URL}/' /eCourse/ui/.env + rebuild_web="1" + + if [[ "$DEBUG" == "1" ]]; then + echo "";echo ""; + echo "DEBUG:" + echo "### VITE_DEV_PB_URL Change" + echo "";echo ""; + echo "VITE_DEV_PB_URL = '${VITE_DEV_PB_URL}'" + echo "DEV_PB_URL = '${DEV_PB_URL}'" + echo "Trigger Rebuild" + fi; + + VITE_DEV_PB_URL="${DEV_PB_URL}" +fi; + +if [[ "${VITE_PROD_PB_URL}" == "" && "${PROD_PB_URL}" == "" ]]; then + PROD_PB_URL="http://127.0.0.1:80" +fi + +if [[ "${VITE_PROD_PB_URL}" != "${PROD_PB_URL}" ]]; then + sed -i 's/^VITE_PROD_PB_URL=.*/VITE_PROD_PB_URL=${PROD_PB_URL}/' /eCourse/ui/.env + rebuild_web="1"; + if [[ "$DEBUG" == "1" ]]; then + echo "";echo ""; + echo "DEBUG:" + echo "### VITE_PROD_PB_URL Change" + echo "";echo ""; + echo "VITE_PROD_PB_URL = '${VITE_PROD_PB_URL}'" + echo "PROD_PB_URL = '${PROD_PB_URL}'" + echo "Trigger Rebuild" + fi; + VITE_PROD_PB_URL="${PROD_PB_URL}" +fi; + +if [[ "${DEBUG}" == "1" ]]; then + echo "";echo ""; + echo "DEBUG:" + echo "### Rebuild Web" + echo "rebuild_web = ${rebuild_web}" +fi; + +if [[ "${rebuild_web}" == "1" ]]; then + debug_run "npm audit fix" 2>&1 + debug_run "npx update-browserslist-db@latest" 2>&1 + debug_run "npm install" 2>&1 + debug_run "npm run build" 2>&1 + debug_run "rm /eCourse/pb/pb_public/* -r" 2>&1 #recursive delete + debug_run "rm /eCourse/pb/pb_public/.*" 2>&1 + debug_run "mv dist/* /eCourse/pb/pb_public" 2>&1 +fi; + +if [[ "${PB_SERVE_HOST}" == "" ]]; then + PB_SERVE_HOST="0.0.0.0" +fi + +if [[ "$PB_SERVE_PORT" == "" ]]; then + PB_SERVE_PORT="80" +fi + +PB_SERVE="${PB_SERVE_HOST}:${PB_SERVE_PORT}" + +update_time; +echo "${eCourseTD} Ilyas-Codes/eCourse started to frontend:" +command "Users UI: ${VITE_PROD_PB_URL}" +command "Admin UI: ${VITE_PROD_PB_URL}/_/" +command "REST API: ${VITE_PROD_PB_URL}/api/" + +echo "PocketBase Server" +/eCourse/pb/pocketbase serve --http=${PB_SERVE}