.Net8项目使用docker、docker-compose部署步骤

这里写自定义目录标题

一、新建ASP.NET Core Web应用,默认勾选启用容器支持


二、修改自动生成的Dockerfile文件

csharp 复制代码
# 使用 .NET 8.0 运行时镜像作为基础镜像
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS runtime
WORKDIR /app

# 设置时区(可选)
ENV TZ=Asia/Shanghai
RUN ln -fs /usr/share/zoneinfo/$TZ /etc/localtime && dpkg-reconfigure -f noninteractive tzdata

# 从当前文件夹复制文件到容器
COPY . .

# 设置可执行文件的权限
RUN chmod +x WebApplication1

ENTRYPOINT ["./WebApplication1"]

三、发布项目

项目右键-->发布

发布设置-->目标运行时选:linux-64,文件发布选项:生成单个文件


使用docker构建镜像、docker-compose启动容器

1.cmd(命令提示符) 切换目录到 项目发布文件夹

2.使用docker构建镜像

3.使用docker-compose启动容器

4.导出镜像,导入镜像

项目发布目录,新建docker-compose文件

删除:appsettings.Development.json、*.pdb等多余文件

volumes:可挂载文件、文件夹(物理地址文件与docker容器地址对应)

csharp 复制代码
services:
  WebApplication1:
    image: server/WebApplication1:1.0.0.0
    container_name: WebApplication1
    volumes:

     # #window path
- /C/Users/Desktop/test/WebApplication1/WebApplication1/bin/Release/net8.0/publish/appsettings.json:/WebApplication1/appsettings.json
     - /C/Users/Desktop/test/WebApplication1/WebApplication1/bin/Release/net8.0/publish/logs:/WebApplication1/logs
    restart: always
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - "8088:8088"

cmd执行

csharp 复制代码
# 构建镜像时指定标签(server/WebApplication1:1.0.0.0要与上方docker-compose文件中image一致)
docker build -t server/WebApplication1:1.0.0.0 . 

# 后台启动容器
docker-compose up --detach

# 将镜像导出为.tar文件
docker save -o WebApplication1.tar WebApplication1

# 将文件压缩成.7z文件(如果挂载了appsettings.json文件,压缩时需要将.tar、appsettings.json、docker-compose三个一起压缩为WebApplication1.tar.7z)
#将.7z文件上传至服务器,切换到文件目录,解压缩
7z x WebApplication1.tar.7z

#在服务器上导入Docker镜像
docker load -i WebApplication1.tar

# 后台启动容器
docker-compose up --detach

# 停止容器
docker stop WebApplication1

#删除容器
docker rm WebApplication1
相关推荐
yagami_gagami4 小时前
第四届黄河流域公安院校电子物证个人赛服务器取证
linux·服务器·网络·mysql·安全·docker·llama
小挪号底迪滴5 小时前
Docker 多阶段构建实战:让 Python 镜像更小、更快、更安全
python·安全·docker
他们叫我 悦儿遥遥雨5 小时前
.NET 8 Web开发入门(六):Blazor 全栈开发——告别 JavaScript 焦虑
前端·javascript·.net
风曦Kisaki5 小时前
Kubernetes(K8s)笔记Day07: StatefulSet 有状态控制器详解与使用案例
linux·docker·云原生·容器·kubernetes
深爱水瓶 血影S狂风5 小时前
Linux.NET学习手记(2)
linux·学习·.net
张文君5 小时前
docker registry 删除镜像
运维·docker·容器
cuiyaonan20005 小时前
some weird issues regarding docker
运维·docker·容器
贾天佑忆月 迷失的昵5 小时前
.NET Web开发技术简单整理
前端·.net
zerwave5 小时前
Docker 学习:多容器网络互通——从 host 模式到自定义 bridge 网络
网络·学习·docker
杰佛史彦明 本王是暴君6 小时前
.NET PDB文件到底是什么?
.net