NetCore Docker 打包 推送 一些問題記錄


一、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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM