目录
一.常用保留字指令
- FROM : 基础镜像
- MAINTAINER: 维护者姓名和邮箱
- RUN : Run ["可执行文件",参数1]; Run [shell命令]
- EXPOSE: 暴露出的端口号
- WORKDIR: 登录后的位置
- USER: 执行用户,默认是root
- ENV: 构建过程的环境变量
- ADD: 将宿主机的文件拷贝到docker,自动解压
- COPY: 将宿主机的文件拷贝到docker
- VOLUME: 数据卷,用于数据保存和持久化
- CMD: 启动时要运行的命令,CMD ["test.sh","run"],会被参数覆盖
- ENTRYPOINT: 启动时要运行的命令,不会被覆盖,如果有多个,只最后一个生效
二.Net Core发布到docker
1.创建dockerfile,右键项目->添加->Docker 支持
2.修改默认dockerfile
1) 如果想把编译好的dll发布到docker,如下修改:
#基础镜像
FROM mcr.microsoft.com/dotnet/aspnet:3.1 AS base
WORKDIR /app
COPY . .
#EXPOSE 5004
CMD echo "success----------ok"
ENTRYPOINT ["dotnet", "Test.dll"]
2)如果就想把编译项目,需要把Test/去掉,改一下build前 copy的位置
FROM mcr.microsoft.com/dotnet/aspnet:3.1 AS base
WORKDIR /app
#EXPOSE 80
FROM mcr.microsoft.com/dotnet/sdk:3.1 AS build
WORKDIR /src
COPY ["Test.csproj", "Test/"]
RUN dotnet restore "Test/Test.csproj"
WORKDIR "/src/Test"
COPY . .
RUN dotnet build "Test.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "Test.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "Test.dll"]
3.发布到本地
1) 如果发布的是编译好的如下:
2) 如果发布的是项目
4.通过xftp长传到linux服务器/usr/local/app
5.进入linux切换到目录下执行,生成镜像
docker build -t test:1.0 .
6.如果提示mcr.microsoft.com连接超时,那就是宿主机网络有问题