把dotnet core 项目部署到docker
Docker
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 :配置系统环境变量,比如程序环境环境等在这里配置(开发、预发、线上环境)
#这里是配置程序运行端口,如果程序不使用默认的80端口这里一定要设置(程序运行端口)
ENV ASPNETCORE_URLS http://+:5000
#设置时间为中国上海,默认为UTC时间
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
#启动程序
ENTRYPOINT ["dotnet", "MyAppName.dll"]
已使用的:
# 使用运行时镜像
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
# 链接低版本的SqlServer数据库需要 TSLv1.1版本
RUN sed -i 's/TLSv1.2/TLSv1.0/g' /etc/ssl/openssl.cnf
RUN sed -i 's/TLSv1.2/TLSv1.0/g' /usr/lib/ssl/openssl.cnf
# 设置工作目录
WORKDIR /app
# 把目录下的内容都复制到当前目录下
COPY . .
# 暴露80端口
EXPOSE 80
# 运行镜像入口命令和可执行文件名称
ENTRYPOINT ["dotnet", "lycore01.dll"]
# AS base 不能改动
FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base
# 链接低版本的SqlServer数据库需要 TSLv1.1版本
RUN sed -i 's/MinProtocol = TLSv1.2/MinProtocol = TLSv1/g' /etc/ssl/openssl.cnf
RUN sed -i 's/MinProtocol = TLSv1.2/MinProtocol = TLSv1/g' /usr/lib/ssl/openssl.cnf
# 设置工作目录
WORKDIR /app
# 把目录下的内容都复制到当前目录下
COPY . .
# 暴露80端口
EXPOSE 80
# 运行镜像入口命令和可执行文件名称
ENTRYPOINT ["dotnet", "SDTWebAppApiCore.dll"]
部署到Centos8
FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS net5
# 链接低版本的SqlServer数据库需要 TSLv1.1版本
RUN sed -i 's/TLSv1.2/TLSv1/g' /etc/ssl/openssl.cnf
RUN sed -i 's/TLSv1.2/TLSv1/g' /usr/lib/ssl/openssl.cnf
# 设置工作目录
WORKDIR /app
# 把目录下的内容都复制到当前目录下
COPY . .
# 暴露80端口
EXPOSE 80
# 运行镜像入口命令和可执行文件名称
ENTRYPOINT ["dotnet", "SDTWebAppApiCore.dll"]
发布
cd 到 publish文件夹, 执行dockerfile:
$docker build -t core01:v1 .
运行容器:
$docker run -v /D/WebSite/dotNetCore/publish01:/app --name=ctnCore01 -p 8130:80 -d core01:v1
容器内运行命令
apt-get update
apt-get install vim