Added docker support

This commit is contained in:
Fishandchips321 2025-12-20 22:36:24 +00:00
parent ccc5337dc1
commit 113f0c647b
5 changed files with 77 additions and 1 deletions

21
README.md Normal file
View file

@ -0,0 +1,21 @@
# Container Dashboard
A simple dashboard for turning your docker/kubernetes services (containers/pods) on or off from a web UI
## Usage
First build the docker images under `frontend` and `backend`
`docker build -t container-dashboard-frontend ./frontend`
`docker build -t container-dashboard-backend ./backend`
### Frontend
Run the frontend with `docker run -d -p 80:80 BACKEND=\<url to backend\> container-dashboard-frontend:latest`.
`BACKEND` points towards the backend container and looks something like this: `http(s)://123.123.123:8080`
### Backend
Run the backend with `docker run -d -p 8080:8080 -e BACKEND=<docker | kubernetes> -e KUBECONFIG=<path to kube config file> -v /path/to/kube-config:/app/kube-config container-dashboard-backend:latest`
The environment variable `KUBECONFIG` and the mounted kubernetes config folder are only needed if you are using kubernetes.
Docker backend has not been implemented yet. Feel free to contribute ^w^

28
backend/Dockerfile Normal file
View file

@ -0,0 +1,28 @@
FROM mcr.microsoft.com/dotnet/sdk:9.0 AS backend-build
WORKDIR /app/backend
# Copy backend files
COPY ./*.csproj ./
RUN dotnet restore
COPY ./ ./
RUN dotnet publish -c Release -o out
FROM mcr.microsoft.com/dotnet/aspnet:9.0 AS runtime
WORKDIR /app
# Copy backend build output
COPY --from=backend-build /app/backend/out ./backend
# Create a directory for the Kubernetes configuration file
RUN mkdir -p /app/kube-config
# Set an environment variable to point to the Kubernetes config directory
ENV KUBECONFIG=/app/kube-config/config
ENV BACKEND=kubernetes
EXPOSE 8080
CMD ["sh", "-c", "dotnet backend/backend.dll"]

22
frontend/Dockerfile Normal file
View file

@ -0,0 +1,22 @@
FROM node:18 AS frontend-build
WORKDIR /app/frontend
COPY ./package.json ./package-lock.json ./
RUN npm install
COPY ./ ./
RUN npm run build
FROM nginx:stable AS runtime
WORKDIR /usr/share/nginx/html
COPY --from=frontend-build /app/frontend/dist .
COPY ./envVars.sh /docker-entrypoint.d/
RUN chmod +x /docker-entrypoint.d/envVars.sh
ENV BACKEND=
EXPOSE 80

5
frontend/envVars.sh Executable file
View file

@ -0,0 +1,5 @@
SETTINGFILE=`find /usr/share/nginx/html/_astro/ -name 'CardList.*.js'`
echo "Setting backend in $SETTINGFILE to $BACKEND"
sed -i "s#ENDPOINT#$BACKEND#g" $SETTINGFILE

View file

@ -3,5 +3,5 @@ export interface ConfigType {
}
export const Config: ConfigType = {
endpoint: "http://localhost:5107/Service",
endpoint: "ENDPOINT/Service",
}