1. 环境准备
服务器:X64、Cent OS 7.2
编译器:Visual Studio 2022
2. 项目搭建
新建名为Dockerfile的文件(无后缀),然后把整个目录直接上传服务器。
# 构建阶段
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /app
# 将所有文件复制到工作目录
COPY . ./
# 构建应用程序
RUN dotnet publish -c Release -r linux-x64 -o out --self-contained true /p:PublishSingleFile=true /p:IncludeNativeLibrariesForSelfExtract=true
# 运行阶段
FROM mcr.microsoft.com/dotnet/runtime:8.0 AS runtime
WORKDIR /app
COPY --from=build /app/out ./
# 指定应用程序入口点
ENTRYPOINT ["./WebAPI-Demo"]
3. Docker环境安装
3.1 卸载(可选) :如果之前安装过旧版本的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
3.2 安装必要的依赖包:确保系统安装了所需的软件包,以便安装 Docker:
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2 --skip-broken
3.3 添加 Docker 软件包源:将 Docker 软件包源添加到系统中。执行以下命令:
# 设置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
3.4 安装Docker-CE:docker-ce为社区免费版本。稍等片刻,docker即可安装成功。
yum install -y docker-ce
3.5 启动 Docker 服务:安装完成后,启动 Docker 服务。执行以下命令:
# 启动docker服务
systemctl start docker
# 停止docker服务
systemctl stop docker
# 重启docker服务
systemctl restart docker
# 设置 Docker 开机自启
sudo systemctl enable docker
# 验证安装
sudo docker --version
# 验证 Docker 服务是否正在运行
sudo systemctl status docker
4. 管理防火墙
# 关闭
systemctl stop firewalld
# 禁止开机启动防火墙
systemctl disable firewalld
# 开放端口,如果你需要开放 `UDP` 端口,可以将 `tcp` 替换为 `udp`。
sudo firewall-cmd --zone=public --add-port=<端口号>/tcp --permanent
# 关闭端口
sudo firewall-cmd --zone=public --remove-port=<端口号>/tcp --permanent
# 重新加载防火墙规则
sudo firewall-cmd --reload
# 查看已开放端口
sudo firewall-cmd --zone=public --list-ports
5. 构建镜像
docker build -t my-dotnet-app .
docker build: 这是用于构建 Docker 镜像的命令。-t my-dotnet-app: 这是一个选项,用于为构建的镜像指定一个标签(tag),即镜像的名称。在这个命令中,my-dotnet-app是镜像的名称。.: 这是构建上下文路径,指定了Dockerfile的位置。在这里,.表示当前目录,即Dockerfile所在的目录。Docker将会在这个目录下查找Dockerfile并基于它构建镜像。
6. 运行容器
docker run -d --rm -p <host_port>:<container_port> my-dotnet-app
docker run: 这是用于运行 Docker 容器的命令。-d: 这是一个选项,表示以后台(detached)模式运行容器。这意味着容器会在后台运行,并且不会占用当前终端。--rm: 这是一个选项,表示容器在停止后立即删除。这样做可以确保在容器停止后及时清理容器实例,以释放系统资源。-p <host_port>:<container_port>: 这是一个选项,用于将容器内部的端口映射到宿主机上的端口。<host_port>是宿主机上的端口,<container_port>是容器内部监听的端口。通过这个选项,可以让外部系统通过宿主机上的端口访问容器中运行的应用程序。my-dotnet-app: 这是要运行的 Docker 镜像的名称。在这个命令中,my-dotnet-app是要运行的镜像名称。
7. 网站访问
访问地址:http://ip:port/weatherforecast