deployment files added

This commit is contained in:
2026-06-28 05:32:02 -04:00
parent 1ab987241e
commit ac189a55f6
3 changed files with 98 additions and 0 deletions

28
Dockerfile Normal file
View File

@@ -0,0 +1,28 @@
FROM mcr.microsoft.com/dotnet/sdk:10.0 AS build
WORKDIR /src
EXPOSE 80
# Copy project files and restore dependencies
COPY src/SportsDivision.Domain/SportsDivision.Domain.csproj src/SportsDivision.Domain/
COPY src/SportsDivision.Application/SportsDivision.Application.csproj src/SportsDivision.Application/
COPY src/SportsDivision.Infrastructure/SportsDivision.Infrastructure.csproj src/SportsDivision.Infrastructure/
COPY src/SportsDivision.Web/SportsDivision.Web.csproj src/SportsDivision.Web/
RUN dotnet restore src/SportsDivision.Web/SportsDivision.Web.csproj
COPY . ./
RUN dotnet publish src/SportsDivision.Web/SportsDivision.Web.csproj -c Release -o /app/out
# Runtime Stage
FROM mcr.microsoft.com/dotnet/aspnet:10.0
WORKDIR /app
ENV ASPNETCORE_ENVIRONMENT=Production
ENV ASPNETCORE_URLS=http://+:80
COPY --from=build /app/out .
ENTRYPOINT ["dotnet", "SportsDivision.dll"]

52
Jenkinsfile vendored Normal file
View File

@@ -0,0 +1,52 @@
pipeline {
agent any
environment {
REGISTRY = 'registry.dwarrington.com'
IMAGE_WEB = 'sportsdivision'
IMAGE_TAG = "${env.BUILD_NUMBER}"
CREDENTIALS_ID = 'registry-creds'
COMPOSE_FILE = 'docker-compose.yml'
}
stages {
stage('Checkout') {
steps {
checkout scm
}
}
stage('Build & Push') {
steps {
script {
docker.withRegistry("https://${REGISTRY}", CREDENTIALS_ID) {
def img = docker.build("${REGISTRY}/${IMAGE_WEB}:${IMAGE_TAG}", "-f Dockerfile .")
img.push()
img.push('latest')
}
}
}
}
stage('Deploy') {
steps {
withCredentials([usernamePassword(
credentialsId: CREDENTIALS_ID,
usernameVariable: 'DOCKER_USER',
passwordVariable: 'DOCKER_PASS'
)]) {
sh '''
export PATH=$PATH:/usr/libexec/docker/cli-plugins:/usr/bin:/usr/local/bin
echo "$DOCKER_PASS" | docker login ${REGISTRY} -u "$DOCKER_USER" --password-stdin
sed -i "/sportsdivision:/,/image:/s|image:.*|image: ${REGISTRY}/${IMAGE_WEB}:${IMAGE_TAG}|" ${COMPOSE_FILE}
docker compose -f ${COMPOSE_FILE} pull sportsdivision
docker compose -f ${COMPOSE_FILE} up -d --force-recreate --remove-orphans
'''
}
}
}
}
}

18
docker-compose.yml Normal file
View File

@@ -0,0 +1,18 @@
services:
sportsdivision:
build:
context: .
dockerfile: Dockerfile
image: registry.dwarrington.com/sportsdivision:${IMAGE_TAG}
container_name: sportsdivision
restart: always
ports:
- "5036:80"
volumes:
- ./data:/app/data
networks:
- caddy_network
networks:
caddy_network:
external: true