将 .net core 程序部署到 docker

发布项目

  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文件夹

构建镜像

\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 命令

运行容器

构建完镜像运行

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 命令

posted @ 2023-02-18 12:00  张三删库跑路  阅读(247)  评论(0编辑  收藏  举报