FROM node:20.11.1-buster
WORKDIR /
# Dependencies for live container
RUN apt-get -y update && apt -y install nano git
RUN git clone https://github.com/Ilyas-Codes/eCourse.git
# ARGS Variables
ARG PB_VERSION=0.22.19
ADD https://github.com/pocketbase/pocketbase/releases/download/v${PB_VERSION}/pocketbase_${PB_VERSION}_linux_amd64.zip /tmp/pb.zip
RUN unzip /tmp/pb.zip -d /eCourse/pb
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 npm install
RUN npm run build
RUN mv dist/* /eCourse/pb/pb_public
# Creating Executer
RUN touch /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 PB_SERVE_PORT=80
RUN <<<END
#!/bin/sh
export /eCourse/ui/.env
rebuild_web=0;
if [[ ${VITE_DEV_PB_URL} != ${DEV_PB_URL} ]]; then
sed -i 's/^VITE_DEV_PB_URL=.*/VITE_DEV_PB_URL=${DEV_PB_URL}' .env
rebuild_web=1
fi;
if [[ ${VITE_DEV_PB_URL} != ${PROD_PB_URL} ]]; then
sed -i 's/^VITE_PROD_PB_URL=.*/VITE_PROD_PB_URL=${PROD_PB_URL}' .env
rebuild_web=1;
fi;
if [[ "${rebuild_web}" == "1" ]]; then
cd /eCourse/ui;
npm install
npm run build
rm /eCourse/pb/pb_public/*
rm /eCourse/pb/pb_public/.*
mv dist/* /eCourse/pb/pb_public
fi;
PB_SERVE="${PB_SERVE_HOST}:${PB_SERVE_PORT}"
/eCourse/pb/pocketbase serve --http=${PB_SERVE}
>>>END > /eCourse/pb/runner.sh
EXPOSE 80 90
CMD ["/eCourse/pb/runner.sh"]