Quick start
cd /var/www/***/developer_mini_core_json_***_docker/Miniblog.Core-master/src
create dockefile
docker build -t iaspnetcore/docker-miniblog .
docker run iaspnetcore/docker-miniblog
Dockerfile
FROM mcr.microsoft.com/dotnet/sdk:9.0@sha256:3fcf6f1e809c0553f9feb222369f58749af314af6f063f389cbd2f913b4ad556 AS build
WORKDIR /App
# Copy everything
COPY . ./
# Restore as distinct layers
RUN dotnet restore
# Build and publish a release
RUN dotnet publish -o out
# Build runtime image
FROM mcr.microsoft.com/dotnet/aspnet:9.0@sha256:b4bea3a52a0a77317fa93c5bbdb076623f81e3e2f201078d89914da71318b5d8
WORKDIR /App
COPY --from=build /App/out .
ENTRYPOINT ["dotnet", "DotNet.Docker.dll"]see:https://learn.microsoft.com/en-us/dotnet/core/docker/build-container?tabs=linux&pivots=dotnet-10-0#create-the-dockerfile
# 基于microsoft/dotnet:latest构建Docker Image
FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build
# 进入docker中的/usr/local/src目录
RUN cd /usr/local/src
# 创建DockerWebAPI目录
RUN mkdir DDockerWebApp
# 设置工作路径
WORKDIR /usr/local/src/DockerWebApp
# Copy everything
# 将当前文件夹下的所有文件全部复制到工作目录
COPY . ./
# Restore as distinct layers
RUN dotnet restore
# Build and publish a release
RUN dotnet publish -o out
# Build runtime image
FROM mcr.microsoft.com/dotnet/aspnet:9.0
WORKDIR /usr/local/src/DockerWebApp
COPY --from=build /usr/local/src/DockerWebApp/out .
# 设置环境变量
ENV ASPNETCORE_URLS=http://+:80
ENV ASPNETCORE_ENVIRONMENT=Production
# 向外界暴露5000端口
EXPOSE 80
# 执行dotnet 命令
ENTRYPOINT ["dotnet", "Miniblog.Core.dll"]
cd /var/www/msly/developer_mini_core_json_blogmatterxiaomicom_docker/Miniblog.Core-master/src
docker build -t iaspnetcore/docker-miniblog .
output
[+] Building 82.7s (16/16) FINISHED docker:default
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 812B 0.0s
=> [internal] load metadata for mcr.microsoft.com/dotnet/aspnet:9.0 0.2s
=> [internal] load metadata for mcr.microsoft.com/dotnet/sdk:9.0 0.2s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [build 1/7] FROM mcr.microsoft.com/dotnet/sdk:9.0@sha256:1f2cb07e7ced57c4ea61163d485a2ee1cffd63763c6b17a4447ce734ff236475 13.5s
=> => resolve mcr.microsoft.com/dotnet/sdk:9.0@sha256:1f2cb07e7ced57c4ea61163d485a2ee1cffd63763c6b17a4447ce734ff236475 0.0s
=> => sha256:8c3389f63006ab2550d32064c59f752e5768092bcbe0c18b00dedd332e01f8a5 17.51MB / 17.51MB 0.7s
=> => sha256:d802eab3e239903cd9c6b59db593726bf3db05d0d978b2f6d388ffb00794c16c 2.70kB / 2.70kB 0.1s
=> => sha256:3fd17f96bc43bd002026f3e23cef191ee9fa703bd7275137316ad58797687e9a 176.20MB / 176.20MB 2.7s
=> => sha256:4e5aac397c43961d16aeac80b369cfb1a1efc821b6ac84d9ccd9b8df4824fa50 31.09MB / 31.09MB 0.9s
=> => extracting sha256:4e5aac397c43961d16aeac80b369cfb1a1efc821b6ac84d9ccd9b8df4824fa50 1.4s
=> => extracting sha256:3fd17f96bc43bd002026f3e23cef191ee9fa703bd7275137316ad58797687e9a 6.1s
=> => extracting sha256:d802eab3e239903cd9c6b59db593726bf3db05d0d978b2f6d388ffb00794c16c 0.0s
=> => extracting sha256:8c3389f63006ab2550d32064c59f752e5768092bcbe0c18b00dedd332e01f8a5 0.7s
=> [stage-1 1/3] FROM mcr.microsoft.com/dotnet/aspnet:9.0@sha256:5d6784c19991f6cd2b07acbc4f40236e9b90fe4200aebb83c85370fc25a7f248 8.3s
=> => resolve mcr.microsoft.com/dotnet/aspnet:9.0@sha256:5d6784c19991f6cd2b07acbc4f40236e9b90fe4200aebb83c85370fc25a7f248 0.0s
=> => sha256:8a0e1c84da29c7992538183c144c3e6b649dc7bf4c1f979dcb3471f3096cb90a 167B / 167B 0.1s
=> => sha256:d5f21e44f6e587e57ecda867a6978d583ca15c5a32e45a54e6819eec53668f0c 3.33kB / 3.33kB 0.1s
=> => sha256:52e6ba810c215cc68e33ce97427495289955476852c9baef889715773f4cd834 11.32MB / 11.32MB 0.9s
=> => sha256:0301e63acb597dd4fc38493bf51400f6ec6261feba483f669b889b1bad310462 34.56MB / 34.56MB 1.8s
=> => sha256:b9136609bef0128191aa157637b98dd7b98e52154ca60c18258d65957a01c6d0 28.24MB / 28.24MB 1.6s
=> => sha256:aace5b47b3e8da79809de71ca3f39a56807addd2f7ffc74f7aea95dd1d9aa64e 15.73MB / 18.74MB 81.0s
=> => extracting sha256:b9136609bef0128191aa157637b98dd7b98e52154ca60c18258d65957a01c6d0 3.2s
=> => extracting sha256:aace5b47b3e8da79809de71ca3f39a56807addd2f7ffc74f7aea95dd1d9aa64e 0.7s
=> => extracting sha256:d5f21e44f6e587e57ecda867a6978d583ca15c5a32e45a54e6819eec53668f0c 0.0s
=> => extracting sha256:0301e63acb597dd4fc38493bf51400f6ec6261feba483f669b889b1bad310462 1.1s
=> => extracting sha256:8a0e1c84da29c7992538183c144c3e6b649dc7bf4c1f979dcb3471f3096cb90a 0.0s
=> => extracting sha256:52e6ba810c215cc68e33ce97427495289955476852c9baef889715773f4cd834 0.4s
=> [internal] load build context 1.1s
=> => transferring context: 50.32MB 1.0s
=> [stage-1 2/3] WORKDIR /usr/local/src/DockerWebApp 0.0s
=> [build 2/7] RUN cd /usr/local/src 1.0s
=> [build 3/7] RUN mkdir DDockerWebApp 0.9s
=> [build 4/7] WORKDIR /usr/local/src/DockerWebApp 0.0s
=> [build 5/7] COPY . ./ 0.7s
=> [build 6/7] RUN dotnet restore 32.7s
=> [build 7/7] RUN dotnet publish -o out 26.2s
=> [stage-1 3/3] COPY --from=build /usr/local/src/DockerWebApp/out . 0.3s
=> exporting to image 3.2s
=> => exporting layers 2.5s
=> => exporting manifest sha256:33a8c2a95766a6d6a0e3c167a5e16e06bf7d75a1e980b080de82aa0a1fbab668 0.0s
=> => exporting config sha256:2bdfe4068d8b41e5ed2cdab73093bc7f076472e1257d3904b187befd1d752b8e 0.0s
=> => exporting attestation manifest sha256:8b526c6300f6403920a89d3aac5e0714c6befccab9f66bd928d2dbf1fe500f2a 0.0s
=> => exporting manifest list sha256:095d232575494cd5182760e230a27bc4b5e2e16782d43b19ed2802b28149f82c 0.0s
=> => naming to docker.io/iaspnetcore/docker-miniblog:latest 0.0s
=> => unpacking to docker.io/iaspnetcore/docker-miniblog:latest
docker images
IMAGE ID DISK USAGE CONTENT SIZE EXTRA
iaspnetcore/docker-miniblog:latest 095d23257549 417MB 126MB
docker run iaspnetcore/docker-miniblog
warn: Microsoft.AspNetCore.DataProtection.Repositories.FileSystemXmlRepository[60]
Storing keys in a directory '/root/.aspnet/DataProtection-Keys' that may not be persisted outside of the container. Protected data will be unavailable when container is destroyed. For more information go to https://aka.ms/aspnet/dataprotectionwarning
warn: Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager[35]
No XML encryptor configured. Key {1ad4b072-909a-4c4c-bfcd-83839918575f} may be persisted to storage in unencrypted form.
docker run -d -v /c/temp-keys:/root/.aspnet/DataProtection-Keys container-nameAdd a -v volume flag to your docker run command to map the internal container directory to a named volume on your host machine:
docker run -d -p 8080:80 -v miniblog-keys:/root/.aspnet/DataProtection-Keys iaspnetcore/docker-miniblog
.NET's Docker Hub page
You can find a full list of all supported tags on .NET's Docker Hub page
https://hub.docker.com/r/microsoft/dotnet
https://github.com/dotnet/dotnet-docker/blob/main/README.aspnet.md
