diff --git a/.github/workflows/containers-publish.yml b/.github/workflows/containers-publish.yml index 9cd5fcce..b64fbfd4 100644 --- a/.github/workflows/containers-publish.yml +++ b/.github/workflows/containers-publish.yml @@ -1,8 +1,16 @@ +<<<<<<< HEAD +name: 'Containers: Publish' + +on: + push: + tags: [ 'v*' ] +======= name: "Containers: Publish" on: push: tags: ["v*"] +>>>>>>> afb000d3a3ee90a677a2580d82fe3a432d1c1933 permissions: packages: write @@ -12,6 +20,48 @@ jobs: name: Build and Push runs-on: ubuntu-latest steps: +<<<<<<< HEAD + + - uses: actions/checkout@v3 + + - name: Login to ghcr.io Docker registry + uses: docker/login-action@v2 + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Compute Docker container image addresses + run: | + DOCKER_REPOSITORY="ghcr.io/${GITHUB_REPOSITORY,,}" + DOCKER_TAG="${GITHUB_REF:11}" + + echo "DOCKER_REPOSITORY=${DOCKER_REPOSITORY}" >> $GITHUB_ENV + echo "DOCKER_TAG=${DOCKER_TAG}" >> $GITHUB_ENV + + echo "Using: ${DOCKER_REPOSITORY}/*:${DOCKER_TAG}" + + # - name: 'Pull previous Docker container image: :latest' + # run: docker pull "${DOCKER_REPOSITORY}:latest" || true + + - name: 'Pull previous Docker container image: frontend-static:latest' + run: docker pull "${DOCKER_REPOSITORY}/frontend-static:latest" || true + + - name: 'Build Docker container image: frontend-static:latest' + run: | + docker build \ + --cache-from "${DOCKER_REPOSITORY}/frontend-static:latest" \ + --file frontend/Dockerfile.demo \ + --build-arg SERVER_NAME=localhost \ + --tag "${DOCKER_REPOSITORY}/frontend-static:latest" \ + --tag "${DOCKER_REPOSITORY}/frontend-static:${DOCKER_TAG}" \ + frontend + - name: 'Push Docker container image frontend-static:latest' + run: docker push "${DOCKER_REPOSITORY}/frontend-static:latest" + + - name: 'Push Docker container image frontend-static:v*' + run: docker push "${DOCKER_REPOSITORY}/frontend-static:${DOCKER_TAG}" +======= - uses: actions/checkout@v3 - name: Login to ghcr.io Docker registry @@ -51,6 +101,7 @@ jobs: - name: "Push Docker container image frontend-static:v*" run: docker push "${DOCKER_REPOSITORY}/frontend-static:${DOCKER_TAG}" +>>>>>>> afb000d3a3ee90a677a2580d82fe3a432d1c1933 # # # - name: 'Build Docker container image: backend:latest' @@ -65,5 +116,10 @@ jobs: # - name: Push Docker container image backend:v* # run: docker push "${DOCKER_REPOSITORY}/backend:${DOCKER_TAG}" +<<<<<<< HEAD + # - name: Push Docker container image :v*" + # run: docker push "${DOCKER_REPOSITORY}:${DOCKER_TAG}" +======= # - name: Push Docker container image :v*" # run: docker push "${DOCKER_REPOSITORY}:${DOCKER_TAG}" +>>>>>>> afb000d3a3ee90a677a2580d82fe3a432d1c1933 diff --git a/.github/workflows/release-prepare.yml b/.github/workflows/release-prepare.yml index 715e50a6..dd3d3b24 100644 --- a/.github/workflows/release-prepare.yml +++ b/.github/workflows/release-prepare.yml @@ -1,8 +1,16 @@ +<<<<<<< HEAD +name: 'Release: Prepare PR' + +on: + push: + branches: [ develop ] +======= name: "Release: Prepare PR" on: push: branches: [develop] +>>>>>>> afb000d3a3ee90a677a2580d82fe3a432d1c1933 permissions: contents: read @@ -10,9 +18,20 @@ permissions: jobs: release-prepare: +<<<<<<< HEAD + + runs-on: ubuntu-latest + steps: + + - uses: JarvusInnovations/infra-components@channels/github-actions/release-prepare/latest + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + release-branch: main +======= runs-on: ubuntu-latest steps: - uses: JarvusInnovations/infra-components@channels/github-actions/release-prepare/latest with: github-token: ${{ secrets.GITHUB_TOKEN }} release-branch: main +>>>>>>> afb000d3a3ee90a677a2580d82fe3a432d1c1933 diff --git a/.github/workflows/release-publish.yml b/.github/workflows/release-publish.yml index 127aa129..ee3ba2c1 100644 --- a/.github/workflows/release-publish.yml +++ b/.github/workflows/release-publish.yml @@ -1,3 +1,21 @@ +<<<<<<< HEAD +name: 'Release: Publish PR' + +on: + pull_request: + branches: [ main ] + types: [ closed ] + +jobs: + release-publish: + + runs-on: ubuntu-latest + steps: + + - uses: JarvusInnovations/infra-components@channels/github-actions/release-publish/latest + with: + github-token: ${{ secrets.BOT_GITHUB_TOKEN }} +======= name: "Release: Publish PR" on: @@ -12,3 +30,4 @@ jobs: - uses: JarvusInnovations/infra-components@channels/github-actions/release-publish/latest with: github-token: ${{ secrets.BOT_GITHUB_TOKEN }} +>>>>>>> afb000d3a3ee90a677a2580d82fe3a432d1c1933 diff --git a/.github/workflows/release-validate.yml b/.github/workflows/release-validate.yml index 60a2ce03..44d965c3 100644 --- a/.github/workflows/release-validate.yml +++ b/.github/workflows/release-validate.yml @@ -1,3 +1,21 @@ +<<<<<<< HEAD +name: 'Release: Validate PR' + +on: + pull_request: + branches: [ main ] + types: [ opened, edited, reopened, synchronize ] + +jobs: + release-validate: + + runs-on: ubuntu-latest + steps: + + - uses: JarvusInnovations/infra-components@channels/github-actions/release-validate/latest + with: + github-token: ${{ secrets.GITHUB_TOKEN }} +======= name: "Release: Validate PR" on: @@ -12,3 +30,4 @@ jobs: - uses: JarvusInnovations/infra-components@channels/github-actions/release-validate/latest with: github-token: ${{ secrets.GITHUB_TOKEN }} +>>>>>>> afb000d3a3ee90a677a2580d82fe3a432d1c1933 diff --git a/Dockerfile.prod b/Dockerfile.prod new file mode 100644 index 00000000..9c5244c6 --- /dev/null +++ b/Dockerfile.prod @@ -0,0 +1,71 @@ +########### +# BUILDER # +########### + +# pull official base image +FROM python:3.11.4-slim-buster as builder + +# set work directory +WORKDIR /usr/src/app + +# set environment variables +ENV PYTHONDONTWRITEBYTECODE 1 +ENV PYTHONUNBUFFERED 1 + +# install system dependencies +RUN apt-get update && \ + apt-get install -y --no-install-recommends gcc + +# lint +# RUN pip install --upgrade pip +# RUN pip install flake8==6.0.0 +# COPY . /usr/src/app/ +# RUN flake8 --ignore=E501,F401 . + +# install python dependencies +COPY ./requirements.txt . +RUN pip wheel --no-cache-dir --no-deps --wheel-dir /usr/src/app/wheels -r requirements.txt + + +######### +# FINAL # +######### + +# pull official base image +FROM python:3.11.4-slim-buster + +# create directory for the app user +RUN mkdir -p /home/app + +# create the app user +RUN addgroup --system app && adduser --system --group app + +# create the appropriate directories +ENV HOME=/home/app +ENV APP_HOME=/home/app/web +RUN mkdir $APP_HOME +WORKDIR $APP_HOME + +# install dependencies +RUN apt-get update && apt-get install -y --no-install-recommends netcat +COPY --from=builder /usr/src/app/wheels /wheels +COPY --from=builder /usr/src/app/requirements.txt . +RUN pip install --upgrade pip +RUN pip install --no-cache /wheels/* + +# copy entrypoint.prod.sh +COPY ./entrypoint.prod.sh . +RUN sed -i 's/\r$//g' $APP_HOME/entrypoint.prod.sh +RUN chmod +x $APP_HOME/entrypoint.prod.sh + +# copy project +COPY . $APP_HOME + +# chown all the files to the app user +RUN chown -R app:app $APP_HOME + +# change to the app user +USER app + +# run entrypoint.prod.sh +ENTRYPOINT ["/home/app/web/entrypoint.prod.sh"] \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.dev.yml similarity index 52% rename from docker-compose.yml rename to docker-compose.dev.yml index 548bff5b..1f9b3608 100644 --- a/docker-compose.yml +++ b/docker-compose.dev.yml @@ -10,46 +10,29 @@ services: - POSTGRES_DB=balancer_dev ports: - "5432:5432" - networks: - app_net: - ipv4_address: 192.168.0.2 - pgadmin: - container_name: pgadmin4 - image: dpage/pgadmin4 - environment: - PGADMIN_DEFAULT_EMAIL: balancer-noreply@codeforphilly.org - PGADMIN_DEFAULT_PASSWORD: balancer - # PGADMIN_LISTEN_PORT = 80 - # volumes: - # - ./pgadmin-data:/var/lib/pgadmin - # # PGADMIN_LISTEN_PORT = 80 - ports: - - "5050:80" - networks: - app_net: - ipv4_address: 192.168.0.3 backend: image: balancer-backend build: ./server +<<<<<<< HEAD:docker-compose.dev.yml command: python manage.py runserver 0.0.0.0:8000 + volumes: + - ./server:/usr/src/app +======= +>>>>>>> ed1b2e3bc80a77cb1283844d0c153fa1f79d9d76:docker-compose.yml ports: - "8000:8000" env_file: - ./config/env/env.dev depends_on: - db - volumes: - - ./server:/usr/src/server - networks: - app_net: - ipv4_address: 192.168.0.4 frontend: image: balancer-frontend build: context: frontend - dockerfile: Dockerfile + dockerfile: Dockerfile.dev args: - IMAGE_NAME=balancer-frontend + - FRONTEND_VERSION=0.0.1 ports: - "3000:3000" environment: @@ -60,16 +43,6 @@ services: - "/usr/src/app/node_modules/" depends_on: - backend - networks: - app_net: - ipv4_address: 192.168.0.5 volumes: - postgres_data: -networks: - app_net: - ipam: - driver: default - config: - - subnet: "192.168.0.0/24" - gateway: 192.168.0.1 \ No newline at end of file + postgres_data: \ No newline at end of file diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml index 2113abeb..2eb6e187 100644 --- a/docker-compose.prod.yml +++ b/docker-compose.prod.yml @@ -21,6 +21,8 @@ services: - ./config/env/env.dev depends_on: - db +<<<<<<< HEAD +======= frontend: image: balancer-frontend build: @@ -38,6 +40,7 @@ services: - "/usr/src/app/node_modules/" depends_on: - backend +>>>>>>> ac68347c12ced724206112843623ee8c515bd3ad volumes: postgres_data: \ No newline at end of file diff --git a/frontend/.gitignore b/frontend/.gitignore index 6e10711f..31aed3fe 100644 --- a/frontend/.gitignore +++ b/frontend/.gitignore @@ -24,5 +24,3 @@ config/env/env.dev *.njsproj *.sln *.sw? - -.DS_Store diff --git a/frontend/Dockerfile.demo b/frontend/Dockerfile.demo new file mode 100644 index 00000000..ecf94591 --- /dev/null +++ b/frontend/Dockerfile.demo @@ -0,0 +1,38 @@ +# This dockerfile builds an image for a static frontend only server suitable for online hosting. +# Use the official Node.js image as the base image +FROM node:18 as builder + +# Set the working directory inside the container +WORKDIR /usr/src/app + +# Copy package.json and package-lock.json +COPY package*.json ./ + +# Set version number +ARG FRONTEND_VERSION +RUN npm version $FRONTEND_VERSION + +# Install dependencies +RUN npm ci --legacy-peer-deps + +# Copy project files +COPY . . + +RUN npm run build + +FROM alpine:latest as nginx-config +RUN apk --no-cache add gettext +WORKDIR /app +COPY nginx.conf.demo ./nginx.conf.demo +# This will get overwritten by helm chart + +ARG SERVER_NAME +ENV SERVER_NAME $SERVER_NAME +RUN cat nginx.conf.demo | envsubst > nginx.conf + +FROM nginx:alpine + +COPY --from=nginx-config /app/nginx.conf /etc/nginx/nginx.conf +COPY --from=Builder /usr/src/app/dist /usr/share/nginx/html + +# The default entrypoint works for us. \ No newline at end of file diff --git a/frontend/Dockerfile b/frontend/Dockerfile.dev similarity index 67% rename from frontend/Dockerfile rename to frontend/Dockerfile.dev index f5db71c0..c1a4e1a3 100644 --- a/frontend/Dockerfile +++ b/frontend/Dockerfile.dev @@ -1,4 +1,5 @@ -# Use the official Node.js 14 image as the base image +# This dockerfile builds an image for a Vite development server +# Use the official Node.js image as the base image FROM node:18 # Set the working directory inside the container @@ -14,12 +15,12 @@ RUN npm install COPY . . # Build the project -RUN npm run build +# RUN npm run build # Expose a port if required -EXPOSE 3000 +# EXPOSE 3000 -# Start the application +# Start the dev server CMD [ "npm", "run", "dev" ] # Set the image name diff --git a/frontend/docker-compose.demo.yaml b/frontend/docker-compose.demo.yaml new file mode 100644 index 00000000..652b992f --- /dev/null +++ b/frontend/docker-compose.demo.yaml @@ -0,0 +1,16 @@ +version: "3.8" +services: + frontend-static: + build: + context: . + dockerfile: Dockerfile.demo + args: + - IMAGE_NAME=frontend-static + - FRONTEND_VERSION=0.0.2 + - SERVER_NAME=localhost + image: ghcr.io/codeforphilly/balancer-main/frontend-static:0.0.2 + ports: + - "80:80" + environment: + - CHOKIDAR_USEPOLLING=true + - VITE_API_BASE_URL=https://devnull-as-a-service.com/dev/null diff --git a/frontend/docker-compose.dev.yaml b/frontend/docker-compose.dev.yaml new file mode 100644 index 00000000..3c9916f9 --- /dev/null +++ b/frontend/docker-compose.dev.yaml @@ -0,0 +1,16 @@ +version: "3.8" +services: + react-app: + build: + context: . + dockerfile: Dockerfile.dev + args: + - IMAGE_NAME=balancer-frontend-dev + ports: + - "3000:3000" + # The port number is hard-coded, located in ./vite.config.ts + environment: + - CHOKIDAR_USEPOLLING=true + volumes: + - "./:/usr/src/app:delegated" + - "./node_modules:/usr/src/app/node_modules/" diff --git a/frontend/nginx.conf.demo b/frontend/nginx.conf.demo new file mode 100644 index 00000000..c093b5e4 --- /dev/null +++ b/frontend/nginx.conf.demo @@ -0,0 +1,29 @@ +# nginx config file for static frontend demo site. +# This will be the nginx.conf in the docker image before it gets overwritten by kubernetes helm chart. +user nginx; + worker_processes 1; + events { + worker_connections 1024; + } + http { + include /etc/nginx/mime.types; + server { + listen 80; + listen [::]:80; + server_name $SERVER_NAME; + + location / { + root /usr/share/nginx/html; + index index.html index.htm; + } + + #error_page 404 /404.html; + + # redirect server error pages to the static page /50x.html + # + error_page 500 502 503 504 /50x.html; + location = /50x.html { + root /usr/share/nginx/html; + } + } + } \ No newline at end of file diff --git a/frontend/src/pages/About/About.tsx b/frontend/src/pages/About/About.tsx index 7f2f5782..4a264afb 100644 --- a/frontend/src/pages/About/About.tsx +++ b/frontend/src/pages/About/About.tsx @@ -80,16 +80,6 @@ function About() { - {/*
-
-
44 million
-
Transactions every 24 hours
-
$119 million
-
Assets under holding
-
46,000
-
New users annually
-
-
*/} {/* Support Us section */} diff --git a/frontend/src/pages/Help/FeedbackIcon.tsx b/frontend/src/pages/Help/FeedbackIcon.tsx index 142b1920..e0554b5b 100644 --- a/frontend/src/pages/Help/FeedbackIcon.tsx +++ b/frontend/src/pages/Help/FeedbackIcon.tsx @@ -2,7 +2,7 @@ import React from 'react'; const FeedbackIcon = () => ( - + ); diff --git a/frontend/src/pages/Help/Help.tsx b/frontend/src/pages/Help/Help.tsx index de92cfeb..52c2b015 100644 --- a/frontend/src/pages/Help/Help.tsx +++ b/frontend/src/pages/Help/Help.tsx @@ -42,10 +42,10 @@ function Help() { return ( -
+

- Help & Support + Help & Support Page

@@ -55,17 +55,16 @@ function Help() {
{data.icon.map((icon, index) => ( - + +
+ - + icon={icon} + title={data.title[index]} + paragraph={data.paragraph[index]} + /> +
))}
diff --git a/frontend/src/pages/Help/HelpCard.tsx b/frontend/src/pages/Help/HelpCard.tsx index 0f3cf344..a72f5de1 100644 --- a/frontend/src/pages/Help/HelpCard.tsx +++ b/frontend/src/pages/Help/HelpCard.tsx @@ -23,12 +23,6 @@ function HelpCard(data: HelpProps) { } setTitle(data.title); setParagraph(data.paragraph); - // if (data.icon == "UserDoctor") { - // setIcon(); - // } else if (data.icon == "FeedbackIcon") { - // setIcon(); - // } else if (data.icon == "MagnifyingGlassChart") { - // setIcon(); switch (data.icon) { case "UserDoctor": setIcon(); @@ -40,14 +34,13 @@ function HelpCard(data: HelpProps) { setIcon(); break; default: - setIcon(null); + setIcon(null); } - // }, [paragraph, data, title]); - }, [data.icon, data.title, data.paragraph]); + }, + [data.icon, data.title, data.paragraph]); return ( - //
-
+
{icon &&
{icon}
}
diff --git a/frontend/src/pages/Help/LineChart.tsx b/frontend/src/pages/Help/LineChart.tsx index d3822893..58d28626 100644 --- a/frontend/src/pages/Help/LineChart.tsx +++ b/frontend/src/pages/Help/LineChart.tsx @@ -2,7 +2,7 @@ import React from "react"; const LineChart = () => ( - + ); diff --git a/frontend/src/pages/Help/MagnifyingGlassChart.tsx b/frontend/src/pages/Help/MagnifyingGlassChart.tsx index e24e0f44..20b4daa5 100644 --- a/frontend/src/pages/Help/MagnifyingGlassChart.tsx +++ b/frontend/src/pages/Help/MagnifyingGlassChart.tsx @@ -2,7 +2,7 @@ import React from "react"; const MagnifyingGlassChart = () => ( - + ); diff --git a/frontend/src/pages/Help/UserDoctor.tsx b/frontend/src/pages/Help/UserDoctor.tsx index 229c4c63..08d57d64 100644 --- a/frontend/src/pages/Help/UserDoctor.tsx +++ b/frontend/src/pages/Help/UserDoctor.tsx @@ -2,7 +2,7 @@ import React from "react"; const UserDoctor = () => ( - + ); diff --git a/helm-chart/Chart.yaml b/helm-chart/Chart.yaml index b4da3f41..6375a9b2 100644 --- a/helm-chart/Chart.yaml +++ b/helm-chart/Chart.yaml @@ -5,5 +5,9 @@ apiVersion: v2 keywords: - nginx-helm-chart sources: +<<<<<<< HEAD + - https://github.com/CodeForPhilly/balancer-main +======= - https://github.com/CodeForPhilly/balancer-main +>>>>>>> afb000d3a3ee90a677a2580d82fe3a432d1c1933 home: https://opencollective.com/code-for-philly/projects/balancer diff --git a/helm-chart/README.md b/helm-chart/README.md index e69de29b..2945440b 100644 --- a/helm-chart/README.md +++ b/helm-chart/README.md @@ -0,0 +1,2 @@ +Chart initially created by Kompose from nginx-docker-compose.yml + diff --git a/helm-chart/templates/frontend-static-deployment.yaml b/helm-chart/templates/frontend-static-deployment.yaml index ae4b72f8..e015e6c2 100644 --- a/helm-chart/templates/frontend-static-deployment.yaml +++ b/helm-chart/templates/frontend-static-deployment.yaml @@ -30,7 +30,11 @@ spec: - name: CHOKIDAR_USEPOLLING value: "true" - name: VITE_API_BASE_URL +<<<<<<< HEAD + value: {{ .Values.VITE_API_BASE_URL }} +======= value: { { .Values.VITE_API_BASE_URL } } +>>>>>>> afb000d3a3ee90a677a2580d82fe3a432d1c1933 image: ghcr.io/codeforphilly/balancer-main/frontend-static:latest name: frontend-static diff --git a/helm-chart/templates/nginx-configmap.yaml b/helm-chart/templates/nginx-configmap.yaml index ecbf1e6b..8c804e15 100644 --- a/helm-chart/templates/nginx-configmap.yaml +++ b/helm-chart/templates/nginx-configmap.yaml @@ -1,3 +1,50 @@ +<<<<<<< HEAD +apiVersion: v1 +kind: ConfigMap +metadata: + name: nginx-conf +# https://stackoverflow.com/questions/64178370/custom-nginx-conf-from-configmap-in-kubernetes +data: + nginx.conf: | + user nginx; + worker_processes 1; + events { + worker_connections 1024; + } + http { + include /etc/nginx/mime.types; + error_log /var/log/nginx/error_log; + access_log /var/log/nginx/access_log; + server { + listen 80; + listen [::]:80; + server_name {{ .Values.nginx.serverName }}; + + location /access_log { + alias /var/log/nginx/access_log; + } + location /error_log { + alias /var/log/nginx/error_log; + } + + location / { + root /usr/share/nginx/html; + index index.html index.htm; + } + + #error_page 404 /404.html; + + # redirect server error pages to the static page /50x.html + # + #error_page 500 502 503 504 /50x.html; + #location = /50x.html { + # root /usr/share/nginx/html; + + #} + } + } + +======= apiVersion: v1 kind: ConfigMap metadata: @@ -42,3 +89,4 @@ data: #} } } +>>>>>>> afb000d3a3ee90a677a2580d82fe3a432d1c1933 diff --git a/helm-chart/values.yaml b/helm-chart/values.yaml index 0aed6b2e..8ac7a384 100644 --- a/helm-chart/values.yaml +++ b/helm-chart/values.yaml @@ -6,8 +6,12 @@ VITE_API_BASE_URL: https://devnull-as-a-service.com/dev/null ingress: enabled: false className: "" +<<<<<<< HEAD + annotations: {} +======= annotations: {} +>>>>>>> afb000d3a3ee90a677a2580d82fe3a432d1c1933 # kubernetes.io/ingress.class: nginx # kubernetes.io/tls-acme: "true" hosts: @@ -15,4 +19,8 @@ ingress: paths: - path: / pathType: ImplementationSpecific +<<<<<<< HEAD tls: [] +======= + tls: [] +>>>>>>> afb000d3a3ee90a677a2580d82fe3a432d1c1933 diff --git a/server/Dockerfile b/server/Dockerfile.dev similarity index 81% rename from server/Dockerfile rename to server/Dockerfile.dev index 4f8b7c8a..a3c280eb 100644 --- a/server/Dockerfile +++ b/server/Dockerfile.dev @@ -1,3 +1,5 @@ +# This image runs the Django lightweight development web server without the frontend. +# Intended to be run along with the frontend dev server. # pull official base image FROM python:3.11.4-slim-buster diff --git a/server/Dockerfile.prod b/server/Dockerfile.prod deleted file mode 100644 index 6b91236b..00000000 --- a/server/Dockerfile.prod +++ /dev/null @@ -1,30 +0,0 @@ -# pull official base image -FROM python:3.11.4-slim-buster - - -# set work directory -WORKDIR /usr/src/app - -# set environment variables -ENV PYTHONDONTWRITEBYTECODE 1 -ENV PYTHONUNBUFFERED 1 - -# install system dependencies -RUN apt-get update && apt-get install -y netcat - -# install dependencies -RUN pip install --upgrade pip -COPY ./requirements.txt . -RUN pip install -r requirements.txt - -# copy project -COPY . /usr/src/app - -# Correct line endings in entrypoint.sh and make it executable -RUN sed -i 's/\r$//' entrypoint.sh && chmod +x entrypoint.sh - -# run entrypoint.sh -ENTRYPOINT ["./entrypoint.sh"] - -# Default command to run on container start -CMD ["python", "manage.py", "runserver", "0.0.0.0:8000", "--noreload"]