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
解决方案:定位路径不正确,定位到正确路径即可解决。
ASP.NET Core3.1在CentOS8打包Docker镜像
最新推荐文章于 2024-07-20 15:21:56 发布