一.创建Dockerfile文件

在UI层新建DockerFile文件或在创建新项目时勾选使用Docker

注:请仔细看本文命令,有些命令是日常开发可用命令,并不需要全部执行!!!

二.配置Dockerfile文件

1.第一种:使用Dockerfile自动生成代码(可以不发布)

FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
ARG BUILD_CONFIGURATION=Release
WORKDIR /src
COPY ["src/AcmeBookStore.HttpApi.Host/AcmeBookStore.HttpApi.Host.csproj", "src/AcmeBookStore.HttpApi.Host/"]
COPY ["src/AcmeBookStore.Application/AcmeBookStore.Application.csproj", "src/AcmeBookStore.Application/"]
COPY ["src/AcmeBookStore.Domain/AcmeBookStore.Domain.csproj", "src/AcmeBookStore.Domain/"]
COPY ["src/AcmeBookStore.Domain.Shared/AcmeBookStore.Domain.Shared.csproj", "src/AcmeBookStore.Domain.Shared/"]
COPY ["src/AcmeBookStore.Application.Contracts/AcmeBookStore.Application.Contracts.csproj", "src/AcmeBookStore.Application.Contracts/"]
COPY ["src/AcmeBookStore.EntityFrameworkCore/AcmeBookStore.EntityFrameworkCore.csproj", "src/AcmeBookStore.EntityFrameworkCore/"]
COPY ["src/AcmeBookStore.HttpApi/AcmeBookStore.HttpApi.csproj", "src/AcmeBookStore.HttpApi/"]
RUN dotnet restore "./src/AcmeBookStore.HttpApi.Host/AcmeBookStore.HttpApi.Host.csproj"
COPY . .
WORKDIR "/src/src/AcmeBookStore.HttpApi.Host"
RUN dotnet build "./AcmeBookStore.HttpApi.Host.csproj" -c $BUILD_CONFIGURATION -o /app/build

FROM build AS publish
ARG BUILD_CONFIGURATION=Release
RUN dotnet publish "./AcmeBookStore.HttpApi.Host.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .

#启动项目
ENTRYPOINT ["dotnet", "项目UI层.dll"]
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.

2.第二种:重新配置DockerFile(需要发布)

2.1初始配置
#什么都没有配置的
 # 使用官方的 .NET 6.0 SDK 镜像作为基础镜像
 FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
 
 # 暴露端口
 EXPOSE 80
 
 # WORKDIR 镜像的工作目录
 WORKDIR /app
 
 # 复制文件
 COPY . .

 # 定义启动命令
 #项目UI层.dll
 ENTRYPOINT ["dotnet", "Farming.HttpApi.Host.dll"]
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
2.2

配置新功能后

在复制文件之后,启动命令之前进行配置

如果有配置的小功能可以配置再copy之后!例如:Captcha(后端生成验证码)

#配置了后端验证码的
 #配置后端验证码使用 如果没有配置后端验证码
 # 使用官方的 .NET 6.0 SDK 镜像作为基础镜像
 FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
 
 # 暴露端口
 EXPOSE 80
 
 # WORKDIR 镜像的工作目录
 WORKDIR /app
 
 # 复制文件
 COPY . .


 # 定义启动命令
 ENTRYPOINT ["dotnet", "Farming.HttpApi.Host.dll"]#项目UI层.dll
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.

2.3

发布前在配置文件中更改数据库连接字符串!!!

三、配置拉取服务器镜像源并配置docker(Centos系统)

3.1、镜像源

拉取阿里云镜像源

curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
  • 1.

生成缓存

#清空
yum clean all
#生成缓存
yum makecache
  • 1.
  • 2.
  • 3.
  • 4.

如果之前有镜像使用

yum-config-manager --disable  ltl89o8a.mirror.aliyuncs.com
  • 1.
3.2、Docker

卸载之前的docker(可选)

yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine \
                  docker-ce
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.

联网并安装yum工具

yum install -y yum-utils \
           device-mapper-persistent-data \
           lvm2 --skip-broken
  • 1.
  • 2.
  • 3.

更新本地镜像源

# 设置docker镜像源
yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo

yum makecache fast
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.

安装docker

yum install -y docker-ce
  • 1.

查看docker版本

docker --version
  • 1.
# 关闭
systemctl stop firewalld
# 禁止开机启动防火墙
systemctl disable firewalld
  • 1.
  • 2.
  • 3.
  • 4.

启动docker

systemctl start docker
#设置docker为开机自启
sudo systemctl enable docker
  • 1.
  • 2.
  • 3.
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://rxudtqj1.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.

四、设置国内镜像

1.配置国内镜像

#国内镜像
vi  /etc/docker/daemon.json
#出现编辑页面后按 i 进入可编辑
#编辑以下代码
{
    "registry-mirrors": ["https://mirror.ccs.tencentyun.com"],
    "live-restore": true
}
#成功后Esc退出 并 shift+:输入wq结束编辑
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.

2.重启docker服务

systemctl daemon-reload

service docker restart
  • 1.
  • 2.
  • 3.

3.检查是否成功

docker info
  • 1.

五、docker-compose安装

#基于docker安装docker-compose
#进入bin目录
cd /usr/local/bin
#下载docker-compose
curl -L https://github.com/docker/compose/releases/download/1.28.6/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
#赋予权限
chmod +x /usr/local/bin/docker-compose
#查看版本
docker-compose --version
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.

六、在云服务器或虚拟机中配置项目所需要的Nginx、数据库(SqlServer、MySql)缓存数据库(Redis)等

在docker库中查询可拉取版本

docker search 拉取名称
  • 1.

拉取镜像

docker pull 版本名
#删除镜像(当前镜像未被容器使用的前提下)
docker rmi 镜像id/镜像名
  • 1.
  • 2.
  • 3.

查看镜像

#第一种
docker images
#第二种
docker image ls
  • 1.
  • 2.
  • 3.
  • 4.

基于镜像创建容器

docker run --name 容器名称 -p 80:80 -d 镜像名称
  • 1.

容器

#正在运行中的容器
docker ps
#所有容器
docker ps -a
#开启容器
docker start 容器名/id
#停止容器
docker stop 容器名/id
#删除容器
docker rm 容器名/id
#查看容器日志
docker logs 容器名/id
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.

七、.Net Core6(后端项目)

#使用xftp7工具将发布后的文件上传到服务器下的root(最高权限文件夹)可以在当前文件夹中新建文件夹以区分

#文件过大可以使用压缩文件形式传送(压缩格式为.tar)
#传送过后在终端中进入当前文件夹
cd /root/文件夹名
#查看文件夹所有文件
ls
#进行解压
tar -xvf 压缩文件.tar
#构建镜像  
#注意:. 不要漏
docker build -t 镜像名 .
#创建容器并使用
docker run -it --rm -p 8088:80 --name 容器名 镜像名
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.


注:

 Centos7 安装Docker 详细多图版_centos7安装docker-CSDN博客

 Centos 7配置镜像源_centos7 镜像源配置-CSDN博客

 docker以及docker-compose的部署

 docker配置MySql

 容器镜像服务 (aliyun.com)

[docker部署sqlserver](https://blog.csdn.net/qq_38335295/article/details/134597027)
  • 1.

 docker部署Redis