Asp.Net Core 在Debian环境下使用docker部署

 

官网地址:https://docs.docker.com/engine/install/debian/

 

1.docker在Debian环境下安装

2.Debian配置vim

3.docker部署

4.asp.net core部署在linux下路径拼接问题

1.docker在Debian环境下安装

1.1卸载旧版本

sudo apt-get remove docker docker-engine docker.io containerd runc

1.2安装 Docker Engine-Community

使用 Docker 仓库进行安装

sudo apt-get update

1.3安装 apt 依赖包

sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg2 \
    software-properties-common

1.4添加 Docker 的官方 GPG 密钥

curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/debian/gpg | sudo apt-key add -

1.5验证您现在是否拥有带有指纹的密钥

sudo apt-key fingerprint 0EBFCD88

1.6设置稳定版仓库

sudo add-apt-repository \
   "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/debian \
  $(lsb_release -cs) \
  stable"

1.7安装 Docker Engine-Community(安装最新版和指定版任选其一)

更新 apt 包索引:

sudo apt-get update

(1)安装最新版本的 Docker Engine-Community 和 containerd 

sudo apt-get install docker-ce docker-ce-cli containerd.io

(2)安装特定版本的 Docker Engine-Community

列出可用版本

apt-cache madison docker-ce

安装特定版本命令

sudo apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io

1.8测试Docker安装是否成功

sudo docker run hello-world

1.9普通用户无法直接使用docker命令

sudo usermod -aG docker $USER

systemctl restart docker

sudo docker run hello-world

1.10卸载

删除安装包

sudo apt-get purge docker-ce

删除镜像、容器、配置文件等内容

sudo rm -rf /var/lib/docker

1.11阿里云镜像加速

vim /etc/docker/daemon.json

{

    "registry-mirrors":["https://****.mirror.aliyuncs.com"]

}

 

2.Debian配置vim

使用vim粘贴时无法使用

2.1安装vim

sudo apt-get install vim

2.2修改配置文件

vim /usr/share/vim/vim80/defaults.vim

如果没找到可以使用find命令去找

sudo find -name defaults.vim

sudo  vim ./usr/share/vim/vim81/defaults.vim

把 set mouse=a 改为 set mouse-=a

 

3.docker部署

https://www.cnblogs.com/pengboke/p/15133890.html

大致和我之前写的差不多,之前写的linux服务器是自己虚拟机的centos7,现在的服务器是Debian

需要注意的如果在代码里使用了UseUrls,那docker run的时候-p是UseUrls的端口,要不没法访问,具体原因未知

我以为docker run 还是以Dockerfile里Expose的端口为主

 

4.asp.net core部署在linux下路径拼接问题

4.1问题

将程序部署在linux下发现没有正常的返回结果,因为需要读取特定的文件

经检查,容器部署成功后,目录也成功映射在宿主机上

docker run --name=slicehttp1server -p 9000:9000 -v /home/net5/slicefile/:/home/net5/slicefile/ -d slicehttp1image

docker ps -a

docker exec -it slicehttp1server /bin/bash

4.2排查

将路径通过返回输出发现路径有问题

 

Windows和Linux路径分隔符不一样

Windows:

File file1 = new File ("C:\demo\aa.txt");

Linux:

File file2 = new File ("/demo/aa.txt");

4.3使用Path.DirectorySeparatorChar代替路径分隔符

官网地址:https://docs.microsoft.com/zh-cn/dotnet/api/system.io.path.directoryseparatorchar?view=net-5.0

以后net程序如果需要部署到linux,设计到路径尽量使用Path.DirectorySeparatorChar代替分隔符

 

 

 

posted @   peng_boke  阅读(316)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示