From d4b830096f8c013d1bf4df810abcc1e40225570a Mon Sep 17 00:00:00 2001 From: dymik739 Date: Wed, 9 Apr 2025 21:52:16 +0300 Subject: [PATCH] split Dockerfile into several files, add docker-compose.yaml, add map configuration file --- Dockerfile-cc | 24 ++++++++++++++++++++++ Dockerfile-hm | 23 +++++++++++++++++++++ Dockerfile-map | 22 ++++++++++++++++++++ docker-compose.yaml | 50 +++++++++++++++++++++++++++++++++++++++++++++ map/config.json | 3 +++ 5 files changed, 122 insertions(+) create mode 100644 Dockerfile-cc create mode 100644 Dockerfile-hm create mode 100644 Dockerfile-map create mode 100644 docker-compose.yaml create mode 100644 map/config.json diff --git a/Dockerfile-cc b/Dockerfile-cc new file mode 100644 index 0000000..faf82e7 --- /dev/null +++ b/Dockerfile-cc @@ -0,0 +1,24 @@ +# dotnet build environment +FROM alpine:latest as dotnet +WORKDIR / + +RUN apk add git +RUN git clone https://gitlab.com/kzotkin/hiveemulator + +RUN apk add dotnet8-sdk + +WORKDIR /hiveemulator/src/CommunicationControl/ +RUN dotnet publish DevOpsProject/DevOpsProject.CommunicationControl.API.csproj + +# production environment +#FROM mcr.microsoft.com/dotnet/aspnet:8.0 as prod +FROM alpine:latest as prod +#COPY --from=dotnet /hiveemulator/src/CommunicationControl/DevOpsProject/bin/Release/net8.0/ /app/ +RUN apk add aspnetcore8-runtime +RUN mkdir -p /hiveemulator/src/CommunicationControl/DevOpsProject/bin/Release/net8.0/ +COPY --from=dotnet /hiveemulator/src/CommunicationControl/DevOpsProject/bin/Release/net8.0/ /hiveemulator/src/CommunicationControl/DevOpsProject/bin/Release/net8.0/ + +EXPOSE 8080 + +WORKDIR /hiveemulator/src/CommunicationControl/DevOpsProject/bin/Release/net8.0/ +ENTRYPOINT ["./DevOpsProject.CommunicationControl.API"] diff --git a/Dockerfile-hm b/Dockerfile-hm new file mode 100644 index 0000000..9ae2124 --- /dev/null +++ b/Dockerfile-hm @@ -0,0 +1,23 @@ +# dotnet build environment +FROM alpine:latest as dotnet +WORKDIR / + +RUN apk add git +RUN git clone https://gitlab.com/kzotkin/hiveemulator + +RUN apk add dotnet8-sdk + +WORKDIR /hiveemulator/src/CommunicationControl/ +RUN dotnet publish DevOpsProject.HiveMind.API/DevOpsProject.HiveMind.API.csproj + + +# production environment +#FROM mcr.microsoft.com/dotnet/aspnet:8.0 as prod +FROM alpine:latest as prod +RUN apk add aspnetcore8-runtime +RUN mkdir -p /hiveemulator/src/CommunicationControl/DevOpsProject.HiveMind.API/bin/Release/net8.0/ +#COPY --from=dotnet /hiveemulator/src/CommunicationControl/DevOpsProject.HiveMind.API/bin/Release/net8.0/ /app/ +COPY --from=dotnet /hiveemulator/src/CommunicationControl/DevOpsProject.HiveMind.API/bin/Release/net8.0/ /hiveemulator/src/CommunicationControl/DevOpsProject.HiveMind.API/bin/Release/net8.0/ + +WORKDIR /hiveemulator/src/CommunicationControl/DevOpsProject.HiveMind.API/bin/Release/net8.0/ +ENTRYPOINT ["./DevOpsProject.HiveMind.API"] diff --git a/Dockerfile-map b/Dockerfile-map new file mode 100644 index 0000000..91b4660 --- /dev/null +++ b/Dockerfile-map @@ -0,0 +1,22 @@ +# nodejs build environment +FROM alpine:latest as nodejs +WORKDIR / + +RUN apk add git +RUN git clone https://gitlab.com/kzotkin/hiveemulator + +RUN apk add npm + +WORKDIR /hiveemulator/src/MapClient/ +RUN npm install +RUN npm run build +RUN rm public/config.json + + +# production environment +FROM nginx:alpine +COPY --from=nodejs /hiveemulator/src/MapClient/dist/ /usr/share/nginx/html/ + +EXPOSE 80 + +ENTRYPOINT ["nginx", "-g", "daemon off;"] diff --git a/docker-compose.yaml b/docker-compose.yaml new file mode 100644 index 0000000..4f3d207 --- /dev/null +++ b/docker-compose.yaml @@ -0,0 +1,50 @@ +services: + redis: + image: redis:7 + restart: always + networks: + - sys + + cc: + build: + context: . + dockerfile: Dockerfile-cc + #image: registry.digitalocean.com/duke-listings/cc + restart: always + environment: + Redis__ConnectionString: "redis:6379" + ports: + - 8080:8080 + networks: + - sys + depends_on: + - redis + + hm: + build: + context: . + dockerfile: Dockerfile-hm + #image: registry.digitalocean.com/duke-listings/hm + restart: always + environment: + CommunicationConfiguration__CommunicationControlIP: "cc" + networks: + - sys + depends_on: + - cc + + map: + build: + context: . + dockerfile: Dockerfile-map + #image: registry.digitalocean.com/duke-listings/map + restart: always + volumes: + - ./map/config.json:/usr/share/nginx/html/config.json:ro + ports: + - 80:80 + networks: + - sys + +networks: + sys: diff --git a/map/config.json b/map/config.json new file mode 100644 index 0000000..726354d --- /dev/null +++ b/map/config.json @@ -0,0 +1,3 @@ +{ + "API": "http://10.1.1.2:8080/api/v1/client" +}