Docker 部署 .NET 项目

1.创建 Dockerfile 文件

1
2
3
4
5
6
7
8
9
10
11
FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
COPY . /publish
WORKDIR /publish
EXPOSE 80

# 指定容器运行端口
# EXPOSE 指定的端口无效, docker 还是会默认使用 80 端口,如果要使用其他端口,请使用如下指令
ENV ASPNETCORE_URLS=http://+:5001

# dotnet-project.dll 为项目编译后的 dll 文件
ENTRYPOINT ["dotnet", "dotnet-project.dll"]

2.创建 start.sh 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 容器名称
APP="api"
VERSION="v1"
IMAGE=$APP:$VERSION
DOCKER_NAME="$APP_$VERSION"
# Dockerfile 文件路径
APP_DIR="/home/apps/csharp/api/publish/Dockerfile"
# 项目编译后的 dll 文件路径
PUBLISH_DIR="/home/apps/csharp/api/publish"
echo "--- delete container and image ---"
# 停止并删除容器和镜像
docker stop $DOCKER_NAME
docker rm $DOCKER_NAME
docker rmi $IMAGE
echo "+++ build docker images"
# 重新构建镜像
docker build -t $IMAGE .
echo "--- run docker images ---"
# 启动容器
CONTAINER_ID=`docker run -dit -p 7229:7229 --name=$DOCKER_NAME --restart=always -v $PUBLISH_DIR:/publish $IMAGE`
#docker logs -f $CONTAINER_ID

3.部署项目

将发布后的文件夹上传到服务器后, 在项目文件夹下执行如下指令即可将项目部署到 docker 中

1
$ sh start.sh

Docker 部署 .NET 项目
https://ddvlhr.red/post/2022-11-25-dotnet-docker.html
作者
ddvlhr
发布于
2023年5月12日
许可协议