-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathDockerfile
More file actions
50 lines (42 loc) · 1.94 KB
/
Copy pathDockerfile
File metadata and controls
50 lines (42 loc) · 1.94 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
FROM mcr.microsoft.com/dotnet/aspnet:10.0 AS base
WORKDIR /app
EXPOSE 8080
EXPOSE 8081
FROM mcr.microsoft.com/dotnet/sdk:10.0 AS build
ENV NODE_VERSION=22
RUN curl -fsSL https://deb.nodesource.com/setup_${NODE_VERSION}.x | bash - \
&& apt-get install -y nodejs \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /src
# Copy solution and project files
COPY src/CoreSyncServer.slnx src/
COPY src/Server/CoreSyncServer.csproj src/Server/
COPY src/Server/package.json src/Server/
COPY src/Data/CoreSyncServer.Data.csproj src/Data/
COPY src/Services/CoreSyncServer.Services.csproj src/Services/
COPY src/WebClient/CoreSyncServer.Client.csproj src/WebClient/
COPY src/Agent.Contracts/CoreSyncServer.Agent.Contracts.csproj src/Agent.Contracts/
# Copy CoreSync submodule projects
COPY CoreSync/src/CoreSync/CoreSync.csproj CoreSync/src/CoreSync/
COPY CoreSync/src/CoreSync.PostgreSQL/CoreSync.PostgreSQL.csproj CoreSync/src/CoreSync.PostgreSQL/
COPY CoreSync/src/CoreSync.Sqlite/CoreSync.Sqlite.csproj CoreSync/src/CoreSync.Sqlite/
COPY CoreSync/src/CoreSync.SqlServer/CoreSync.SqlServer.csproj CoreSync/src/CoreSync.SqlServer/
COPY CoreSync/src/CoreSync.SqlServerCT/CoreSync.SqlServerCT.csproj CoreSync/src/CoreSync.SqlServerCT/
COPY CoreSync/src/CoreSync.Http/CoreSync.Http.csproj CoreSync/src/CoreSync.Http/
COPY CoreSync/src/CoreSync.Http.Client/CoreSync.Http.Client.csproj CoreSync/src/CoreSync.Http.Client/
COPY CoreSync/src/CoreSync.Http.Server/CoreSync.Http.Server.csproj CoreSync/src/CoreSync.Http.Server/
# Install npm dependencies for Linux (ignore any Windows lock file)
WORKDIR /src/src/Server
RUN rm -f package-lock.json && npm install
WORKDIR /src
# Restore
RUN dotnet restore src/Server/CoreSyncServer.csproj
# Copy everything and build
COPY CoreSync/ CoreSync/
COPY src/ src/
WORKDIR /src/src/Server
RUN dotnet publish -c Release -o /app/publish --no-restore
FROM base AS final
WORKDIR /app
COPY --from=build /app/publish .
ENTRYPOINT ["dotnet", "CoreSyncServer.dll"]