.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
备注
- 创建Dockerfile文件命令
mkdir Dockerfile - 查看镜像
docker images - 查看所有容器
docker ps -a - 查看正在运行容器
docker ps - 重启容器
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>