一、docker 打包時有私有nuget庫 與 官方nuget庫 或者多個倉庫時 在dockerfile中 ,要怎么保證restore正常
nuget.config文件如下:
<?xml version="1.0" encoding="utf-8"?> <configuration> <packageSources> <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" /> <add key="mynuget" value="http://192.168.18.189:1086/nuget/" /> </packageSources> </configuration>
mynuget 為私有庫地址
1、單項目時
項目結構
/Test
/Dockerfile
/Tools/Nuget/nuget.config --創建一個nuget.config 文件
Dockerfile 文件
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base WORKDIR /app EXPOSE 80 EXPOSE 443 FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build WORKDIR /src COPY . . WORKDIR "/src/."
#主要是 --configfile "./tools/nuget/nuget.config" 參數
RUN dotnet build "Test.csproj" --configfile "./Tools/Nuget/nuget.config" -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"]
2、如果是一個項目下有多個項目
項目結構
/app
/Test1
Dockerfile
Test1.sln
/Test2
Dockerfile
Test2.sln
/Tools/nuget/nuget.config --添加一個nuget.config 文件
/docker-compose.yml --添加文件
/.env --添加文件 說明:如果docker-compose.yml里面有使用到變量時,可在這個文件中設置變量的值;反之 不用加這個文件
在根目錄(app/下)添加 docker-compose.yml、nuget.config、.env 文件
docker-compose.yml文件內容如下
version: "3.7" services: Test1: image: "Test1:${TAG:-latest}" build: context: . dockerfile: Test1/Dockerfile Test2: image: "Test2:${TAG:-latest}" build: context: . dockerfile: Test2/Dockerfile
Dockerfile文件內容如下
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base WORKDIR /app EXPOSE 80 EXPOSE 443 FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build WORKDIR /src COPY . . WORKDIR "/src/." #主要是 --configfile "../tools/nuget/nuget.config" 參數,注意這里 變成了兩個點,因為 nuget.config 在根目錄下 RUN dotnet build "Test1.csproj" --configfile "../Tools/Nuget/nuget.config" -c Release -o /app/build
FROM build AS publish RUN dotnet publish "Test1.csproj" -c Release -o /app/publish FROM base AS final WORKDIR /app COPY --from=publish /app/publish . ENTRYPOINT ["dotnet", "Test1.dll"]
.env 文件內容如下,主要是給上面的 docker-compose.yml中的TAG 設置版本號
TAG=1.0.4
最后 在app根目錄 輸入命令,就會生成鏡像了
docker-compose up
二、docker for windows docker push 私有倉庫的時候 發生異常
docker push 192.168.18.188:5000/test:1.0.1
server gave HTTP response to HTTPS client
設置本機 docker for windows 即可
如果是pull時提示https問題
則修改docker的配置文件/etc/default/docker,添加下面的內容
DOCKER_OPTS="--insecure-registry 192.168.18.188:5000"
然后重啟docker后台進程
$ sudo service docker restart