在VS.net新建.netCore8项目,生成项目的发布文件,之后添加Dockerfile,内容如下:
FROM mcr.microsoft.com/dotnet/aspnet:8.0
# 设置工作目录
WORKDIR /app
# 挂载临时卷(类似于 VOLUME /tmp)
VOLUME /tmp
# 复制应用所需的文件到容器
ADD Web.Core.dll /app/Web.Core.dll
ADD appsettings.Development.json /app/appsettings.Development.json
ADD Web.Core.runtimeconfig.json /app/Web.Core.runtimeconfig.json
ADD Web.Core.deps.json /app/Web.Core.deps.json
ADD Web.Core.pdb /app/Web.Core.pdb
ADD Web.Core.staticwebassets.runtime.json /app/Web.Core.staticwebassets.runtime.json
ADD ./wwwroot/ /app/wwwroot/
# 确保文件存在
RUN touch /app/Web.Core.dll
# 暴露端口
EXPOSE 8080
# 启动命令(设置环境变量以指定配置文件)
ENTRYPOINT ["dotnet", "Web.Core.dll"]
#特别要注意:编辑右下角的CRLF 切换成LF,否则执行sh时报找不到文件的错误
netcore.sh内容:
#!/bin/bash
# 停止并移除当前运行的容器
docker stop netcorerong
docker rm netcorerong
# 移除旧的镜像
docker rmi netcoreimg
# 创建目录权限
mkdir -p /mydata/upload/netcore
chmod 777 /mydata/upload/netcore
# 进入项目目录
cd /mydata/docker/netcore
# 构建新的镜像
docker build -t netcoreimg .
# 启动新的容器
docker run -d -p 8080:8080 \
-e TZ=Asia/Shanghai \
--name netcorerong \
--restart always \
-v /mydata/upload/netcore:/app/upload/netcore \
netcoreimg
# 查看容器的日志
docker logs netcorerong -f