diff --git a/nginx-aspnet-mysql/.docker/docker-compose.yaml b/nginx-aspnet-mysql/.docker/docker-compose.yaml new file mode 100644 index 0000000..51607b8 --- /dev/null +++ b/nginx-aspnet-mysql/.docker/docker-compose.yaml @@ -0,0 +1,38 @@ +services: + backend: + build: + context: backend + target: dev-envs + restart: always + secrets: + - db-password + depends_on: ['db'] + environment: + - ASPNETCORE_URLS=http://+:8000 + volumes: + - /var/run/docker.sock:/var/run/docker.sock + + db: + image: mariadb:10-focal + command: '--default-authentication-plugin=mysql_native_password' + restart: always + secrets: + - db-password + volumes: + - db-data:/var/lib/mysql + environment: + - MYSQL_DATABASE=example + - MYSQL_ROOT_PASSWORD_FILE=/run/secrets/db-password + + proxy: + build: proxy + ports: + - 80:80 + depends_on: + - backend + +volumes: + db-data: +secrets: + db-password: + file: db/password.txt diff --git a/nginx-aspnet-mysql/README.md b/nginx-aspnet-mysql/README.md index 94ce5dd..503eda9 100644 --- a/nginx-aspnet-mysql/README.md +++ b/nginx-aspnet-mysql/README.md @@ -21,13 +21,14 @@ Project structure: ``` services: backend: - build: backend + build: + context: backend ... db: # We use a mariadb image which supports both amd64 & arm64 architecture - image: mariadb:10.6.4-focal + image: mariadb:10-focal # If you really want to use MySQL, uncomment the following line - #image: mysql:8.0.27 + #image: mysql:8 ... proxy: build: proxy @@ -74,3 +75,14 @@ Stop and remove the containers ``` $ docker compose down ``` + +## Use with Docker Development Environments + +You can use this sample with the Dev Environments feature of Docker Desktop. + +![Screenshot of creating a Dev Environment in Docker Desktop](../dev-envs.png) + +To develop directly on the services inside containers, use the HTTPS Git url of the sample: +``` +https://github.com/docker/awesome-compose/tree/master/nginx-aspnet-mysql +``` diff --git a/nginx-aspnet-mysql/backend/Dockerfile b/nginx-aspnet-mysql/backend/Dockerfile index 12446dd..6636f40 100755 --- a/nginx-aspnet-mysql/backend/Dockerfile +++ b/nginx-aspnet-mysql/backend/Dockerfile @@ -1,17 +1,42 @@ +# syntax=docker/dockerfile:1.4 -FROM mcr.microsoft.com/dotnet/aspnet:6.0 as base -WORKDIR /app +FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:6.0 AS base -FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build -COPY . /src WORKDIR /src -RUN ls -RUN dotnet build "aspnetapp.csproj" -c Release -o /app/build -FROM build AS publish -RUN dotnet publish "aspnetapp.csproj" -c Release -o /app/publish +COPY aspnetapp.csproj ./ +RUN ["dotnet", "restore"] + +FROM base as builder + +COPY . . + +CMD ["dotnet", "build", "-c", "-o", "/build"] + +FROM builder as dev-envs + +RUN <