将 .net core 程序部署到 docker

1|0发布项目

  1. 在 VS 里面选择你需要发布的程序右击添加 docke 支持,选择要发布的OS目标是 Linux 。然后会生成一个 Dockerfile 文件
  2. 编辑 Dockerfile 文件注释掉一部分,然后添加 COPY . . ,这边注意俩个 . 之间有个空格,最终需要保留的如下:
FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base WORKDIR /app EXPOSE 80 EXPOSE 443 # 将当前 Dockerfile 所在目录下的所有文件复制到容器中的当前工作目录。 COPY . . # 注意这边俩个点之前有个空格,注意这边俩个点之前有个空格第一个 . 表示 Dockerfile 所在目录,第二个 . 表示容器中的当前工作目录,因此该命令会将当前目录下的所有文件复制到容器的当前工作目录。 ENTRYPOINT ["dotnet", "WebApi.dll"]
  1. 右击发布项目到文件夹,或者在需要发布项目文件夹下面打开 PowerShell 或者 CMD 运行 dotnet publish 命令,默认发布到你程序文件夹下的\bin\Debug\net6.0\publish文件夹

2|0构建镜像

\bin\Debug\net6.0\publish 文件夹或发布好的程序文件夹下打开 PowerShell 运行一下命令进行构建镜像

# 1. 如果文件夹下有 dockerfile 文件: docker build -t 127.0.0.1:5000/<name>:<tag> . # 2. 如果文件夹下没有 dockerfile 文件,运行需要指定 dockerfile 文件 docker build -t 127.0.0.1:5000/<name>:<tag> -f <path> . # 127.0.0.1:5000/ 指定 Docker Registry 的地址(私有仓库地址是什么就改什么) # <name> 代表镜像名 # <tag> 代表版本标签 # <path> 代表指定的 dockerfile 文件如:D:\WMS\Dockerfile

注意:上面命令的 . 不能遗漏,. 表示当前目录,用于指定要运行的 Docker 镜像所在的目录。

  • -t : 镜像的名字及标签;
  • -f :指定要使用的 Dockerfile 路径;

docker build 详细参数查看:官方文档 - docker build 命令

3|0运行容器

构建完镜像运行

docker run -d -p <ip>:<port>:<dockerfilePort> --name=<containerName> --restart=always <name>:<tag> # <ip> 如果没有指定 ip 默认 localhost # <prot> 主机端口 # <containerPort> 容器端口 # <containerName> 给容器命名 # <name> 镜像名 # <tag> 版本标签
  • -i:以交互模式运行容器,通常与 -t 同时使用;

  • -t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;

  • -d:后台运行容器,并返回容器ID;

  • -p:随机端口映射,容器内部端口随机映射到主机的端口;

  • --name:为容器指定一个名称

  • --restart:指定容器在退出后的重启策略。(有以下选项)

    • no:默认策略,容器退出时不重启容器;
    • on-failure:在容器非正常退出时(退出状态非0)才重新启动容器;
    • on-failure:3:在容器非正常退出时重启容器,最多重启3次;
    • always:无论退出状态是如何,都重启容器;
    • unless-stopped:在容器退出时总是重启容器,但是不考虑在 Docker 守护进程启动时就已经停止了的容器。

docker run 详细参数查看:官方文档 - docker run 命令

如果要修改已有容器请用 docker update 命令。如:

docker update --restart=always 容器ID(或者容器名)

docker update 详细参数选项请看:官方文档 - docker update 命令


__EOF__

本文作者张三删库跑路
本文链接https://www.cnblogs.com/Honesty-is-the-best-policy/p/17132251.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   张三删库跑路  阅读(261)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示