ASP.NET Core3.1在CentOS8打包Docker镜像

该博客主要讲述了ASP.NET Core3.1在CentOS8系统中打包Docker镜像的相关内容,涉及后端开发与容器化技术,有助于了解特定环境下的应用部署。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

dockerfile文件
--=dockerfile=============================================================
#FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
FROM mcr.microsoft.com/dotnet/sdk:3.1
#FROM mcr.microsoft.com/dotnet/core/aspnet:3.1
COPY . /publish
WORKDIR /publish
#时区设置为东八区,即可与系统时间一致
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone   

ENV ASPNETCORE_URLS=http://+:5400 #这个命令是在出现Unable to bind to http://localhost:5000 on the IPv6 loopback interface: 'Cannot assign requested address'
错误时添加。

EXPOSE 5400
CMD ["dotnet", "test.dll","--urls", "http://*:5400"]
#如果从docker外部传入变量则把上面的CMD这行替换成下面这行
#ENTRYPOINT dotnet test.dll --environment=${APPLICATION_ENV}
--==============================================================
注:如test.dll后面还需要传入参数则逗号隔开,如:["dotnet", "test.dll","--environment=dev"]

--=dockerfile参考=============================================================
#引入镜像,低版本 docker 去掉  AS base
#换成别人做的阿里镜像
#FROM registry.cn-hangzhou.aliyuncs.com/newbe36524
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base

#配置工作目录 相当于cd
WORKDIR /app
  
#暴露容器端口,此端口与程序运行路径一致,可
EXPOSE 5000

#复制文件到工作目录
COPY . .
 
#ENV :配置系统环境变量,比如程序环境环境等在这里配置(开发、预发、线上环境)
#这里是配置程序运行端口,如果程序不使用默认的5400端口这里一定要设置(程序运行端口)
ENV ASPNETCORE_URLS http://+:5000

#设置时间为中国上海,默认为UTC时间
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

#sqlserver部分版本不能连接需添加如下2行配置
RUN sed -i 's/TLSv1.2/TLSv1.0/g' /etc/ssl/openssl.cnf
RUN sed -i 's/MinProtocol = TLSv1.2/MinProtocol = TLSv1/g' /usr/lib/ssl/openssl.cnf

#skywalking配置
ENV ASPNETCORE_HOSTINGSTARTUPASSEMBLIES=SkyAPM.Agent.AspNetCore
ENV SKYWALKING__SERVICENAME=proname

#启动程序
ENTRYPOINT ["dotnet", "DotNetCore.API.dll"]
# ENTRYPOINT dotnet test.dll --environment=${APPLICATION_ENV}
--==============================================================


一、CentOS8安装Docker

1.设置存储库(用于从存储库安装和更新Docker)
$ sudo yum install -y yum-utils

$ sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

2.安装Docker引擎
sudo yum install docker-ce docker-ce-cli containerd.io
注:如果出现冲突的软件包则后面加上 “--allowerasing” 替换

3.启动Docker
sudo systemctl start docker

4.设置开机自启动
sudo systemctl enable docker

5.查看Docker版本
docker --version
docker version  注:查看完整版本信息

其它Docker常用命令:
--卸载旧版本命令:
sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine


二、打包Docker镜像并运行容器

--拉取ASP.NET Core最新Docker镜像
docker pull microsoft/aspnetcore

--查看是否拉取ASP.NET Core的Docker镜像成功,有显示镜像说明成功了
docker images

--如果要拉取指定ASP.NET Core版本镜像
docker pull microsoft/aspnetcore:3.1

--构建docker镜像
docker build -t test .    
注:test为自定义的小写镜像名称,终端命令需定位到dockerfile文件的目录,如果dockerfile文件中有引入外部镜像则构建时会自动下载外部镜像。

--查看构建的镜像
docker image ls 

--创建并运行容器
docker run --name testapi -d -p 5001:5400 test    注:testapi为自定义的容器名称,5001为外部端口与内部容器端口映射,test为镜像名称

# docker run --name openapirelease_001 -e APPLICATION_ENV="dev" -d -p 5700:80 openapireleasetest001
注:带环境变量创建并运行容器

--也可使用镜像ID创建容器
docker run -it 镜像ID

--查看容器运行情况
docker ps -a


三、其它情况
如果发现请求不了,查看是否下面两种情况:

 1、对外映射的端口没开启。
 --查询端口号XXX 是否开启
firewall-cmd --query-port=XXX/tcp  
--开启端口
firewall-cmd --zone=public --add-port=XXX/tcp --permanent
--重启防火墙
firewall-cmd --reload


2、创建运行容器时监听的端口弄错了:
--查看容器运行日志
docker logs 容器ID

其它常用命令:
--根据镜像ID删除镜像
docker rmi 75835a67d134

--查看容器运行日志
docker logs  容器名称/容器ID
--停止运行容器
docker stop 容器名称/容器ID
--删除容器
docker rm 容器名称/容器ID
--启动容器
docker start <容器 ID>
--重启容器
docker restart <容器 ID>


--重启容器服务
systemctl restart docker


如果不能访问外部请求如数据库等。
1.docker中的网络是通过NAT转发至宿主主机处理的,查看NAT转发是否没有开启
firewall-cmd --query-masquerade

2.开启NAT转发并重启防火墙
firewall-cmd --zone=public --add-masquerade --permanent
firewall-cmd --reload

3.开启外部端口,参考如上开启端口命令


如果出现如下错误:
unable to prepare context: unable to evaluate symlinks in Dockerfile path: lstat /root/wwwroot/openapi/Dockerfile: no such file or directory

解决方案:定位路径不正确,定位到正确路径即可解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值