在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