Added docker support
This commit is contained in:
parent
ccc5337dc1
commit
113f0c647b
5 changed files with 77 additions and 1 deletions
21
README.md
Normal file
21
README.md
Normal 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
28
backend/Dockerfile
Normal 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
22
frontend/Dockerfile
Normal 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
5
frontend/envVars.sh
Executable 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
|
||||||
|
|
@ -3,5 +3,5 @@ export interface ConfigType {
|
||||||
}
|
}
|
||||||
|
|
||||||
export const Config: ConfigType = {
|
export const Config: ConfigType = {
|
||||||
endpoint: "http://localhost:5107/Service",
|
endpoint: "ENDPOINT/Service",
|
||||||
}
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue