Skip to content
This repository was archived by the owner on Jul 28, 2025. It is now read-only.

Commit fad274a

Browse files
feat: refactor to target mesh, builds database with migrations,
1 parent 6d6c015 commit fad274a

File tree

7 files changed

+43
-118
lines changed

7 files changed

+43
-118
lines changed

compose.yaml

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,6 @@ services:
5656
environment:
5757
ACCEPT_EULA: "Y"
5858
MSSQL_SA_PASSWORD: "${DATABASE_PASSWORD}"
59-
MSSQL_PID: "Developer"
6059
ports:
6160
- "1433:1433"
6261
user: "root"
@@ -75,7 +74,7 @@ services:
7574
container_name: db-migrations
7675
build:
7776
context: .
78-
dockerfile: database/Dockerfile.migrations
77+
dockerfile: src/ServiceLayer.Mesh/Dockerfile.migrations
7978
args:
8079
DatabaseConnectionString: "${DatabaseConnectionString}"
8180
depends_on:
@@ -85,8 +84,6 @@ services:
8584
DATABASE_NAME: "${DATABASE_NAME}"
8685
DATABASE_USER: "${DATABASE_USER}"
8786
DATABASE_PASSWORD: "${DATABASE_PASSWORD}"
88-
EVENT_GRID_TOPIC_URL: "${EVENT_GRID_TOPIC_URL}"
89-
EVENT_GRID_TOPIC_KEY: "${EVENT_GRID_TOPIC_KEY}"
9087
networks:
9188
- backend
9289

database/Dockerfile

Lines changed: 0 additions & 16 deletions
This file was deleted.

database/Dockerfile.migrations

Lines changed: 0 additions & 52 deletions
This file was deleted.

database/create_database_statement.sql

Lines changed: 0 additions & 23 deletions
This file was deleted.

database/db-setup-entrypoint.sh

Lines changed: 0 additions & 21 deletions
This file was deleted.
Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,9 @@ set -e
44
# Drop and recreate database for fresh start
55
echo "Checking if database exists..."
66
/opt/mssql-tools/bin/sqlcmd -S db -U "$DATABASE_USER" -P "$DATABASE_PASSWORD" -Q "IF NOT EXISTS (SELECT name FROM sys.databases WHERE name = N'$DATABASE_NAME') CREATE DATABASE $DATABASE_NAME"
7-
/opt/mssql-tools/bin/sqlcmd -S db -U SA -P "$DATABASE_PASSWORD" -Q "CREATE DATABASE $DATABASE_NAME"
87

98
# Run migrations
109
echo "Running migrations..."
11-
/opt/mssql-tools/bin/sqlcmd -S db -d "$DATABASE_NAME" -U SA -P "$DATABASE_PASSWORD" -i /database/migration.sql
10+
/opt/mssql-tools/bin/sqlcmd -S db -d "$DATABASE_NAME" -U "$DATABASE_USER" -P "$DATABASE_PASSWORD" -i /database/migration.sql
1211

1312
echo "Migration completed successfully!"
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
# Stage 1: Build & Generate EF Migration Script
2+
FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build-env
3+
4+
WORKDIR /src
5+
6+
RUN apt-get update && apt-get install -y git
7+
8+
COPY . .
9+
10+
RUN git submodule update --init --recursive
11+
12+
ARG DatabaseConnectionString
13+
ENV DatabaseConnectionString=${DatabaseConnectionString}
14+
15+
RUN dotnet restore ./src/ServiceLayer.Mesh/ServiceLayer.Mesh.csproj && \
16+
dotnet build ./src/ServiceLayer.Mesh/ServiceLayer.Mesh.csproj && \
17+
dotnet tool install dotnet-ef --tool-path /tools
18+
19+
ENV PATH="/tools:$PATH" \
20+
DOTNET_CLI_HOME=/tmp \
21+
DOTNET_SKIP_FIRST_TIME_EXPERIENCE=true \
22+
DOTNET_NOLOGO=true
23+
24+
RUN mkdir -p /database && \
25+
dotnet ef migrations script \
26+
-o /database/migration.sql \
27+
--project ./src/ServiceLayer.Mesh/
28+
29+
# Stage 2: Runtime - Apply Migration and Seed Data
30+
FROM mcr.microsoft.com/mssql-tools:v1 AS migration-env
31+
32+
COPY --from=build-env /database/migration.sql /database/migration.sql
33+
COPY scripts/database/migrate-and-seed.sh /scripts/database/migrate-and-seed.sh
34+
35+
RUN addgroup --system appgroup && \
36+
adduser --system --ingroup appgroup appuser && \
37+
chmod +x /scripts/database/migrate-and-seed.sh
38+
39+
USER appuser
40+
41+
ENTRYPOINT ["/scripts/database/migrate-and-seed.sh"]

0 commit comments

Comments
 (0)