.Net正确姿势发布到Docker中及COPY failed: file not found

创建 Dockerfile 文件

#基于 microsoft/dotnet:5.0.0-core 来构建我们的镜像
FROM mcr.microsoft.com/dotnet/sdk:5.0
#创建 /publish 文件夹
WORKDIR /publish
#创建挂载目录,用于将程序部署在服务器本地
VOLUME /publish
#设置Docker容器对外暴露5000端口
EXPOSE 5000
#使用dotnet dev.dll来运行应用程序
CMD ["dotnet", "cnbingnet.dll"]

构建镜像

#使用当前文件夹下的dockerfile构建名叫 cnbingnet 的镜像。cnbingnet指镜像名,.指当前路径
docker build -t cnbingnet .

运行容器

#创建一个名叫 cnbingnet 的容器。555端口映射到容器。/root/dotnet/cnbingnet/app为本地目录,
#需要提前建好,且将.net5发布后的应用程序放到这个目录。/publish为在dockerfile创建的目录
#cnbingnet为上一步创建的镜像。
docker run -it --name cnbingnet -p 555:555 -v /root/dotnet/cnbingnet/app:/publish -d cnbingnet

备注

  1. 创建Dockerfile文件命令
    mkdir Dockerfile
  2. 查看镜像
    docker images
  3. 查看所有容器
    docker ps -a
  4. 查看正在运行容器
    docker ps
  5. 重启容器
    sudo docker restart [容器ID]

 

在build我这里由于目录设置问题报错

Docker build Error : COPY failed: file not found in build context or excluded by .dockerignore

解决方法:

# 注意 : 1.后面使用的是两个点,指定在上一级目录运行docker
# 2. imagename 中不能使用大写字母
sudo docker build -t imagename -f Dockerfile ..

避免方法

在创建项目时勾选 将解决方案和项目放在同一目录中

 

查看docker运行日志

例如打印容器mytest应用后10行的内容。

$ docker logs --tail="10" mytest

 

查看容器Ip地址:docker inspect <container id>