天天看點

建構docker鏡像時使用代理伺服器

背景介紹

最近需要在公司内網通過docker部署一個.net core 應用,在花費一些時間解決内網伺服器通路外網的問題後,我把代碼放到伺服器上,并且準備通過docker-cli建構應用鏡像,但當建構步驟到restore時,指令一直卡着,原來是docker build時沒有走系統代理。

Dockerfile

FROM microsoft/dotnet:sdk AS build-env
WORKDIR /app

# Copy csproj and restore as distinct layers
COPY  ./ ./
RUN dotnet restore

# Copy everything else and build
COPY . ./
RUN dotnet publish -c Release -o out
RUN ddotnet ef database update -p .\ProjectFolder\ProjectFile.csproj

# Build runtime image
FROM microsoft/dotnet:aspnetcore-runtime
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "ProjectFile.dll"]

FROM microsoft/dotnet:aspnetcore-runtime
           

執行過程

>> docker build .
           

輸出結果

Step 1/13 : FROM microsoft/dotnet:sdk AS build-env

—> 08657316a4cd

Step 2/13 : WORKDIR /app

—> Using cache

—> 5ec5d1f4f275

Step 3/13 : COPY ./ ./

—> 733eb7bbdaa7

Step 5/13 : RUN dotnet restore

//卡在此處

修改方案

使用以下指令代替

docker build --build-arg http_proxy=http://proxy_address:proxy_port --build-arg https_proxy=http://proxy_address:proxy_port .
           

修改後輸出

Sending build context to Docker daemon 1.044MB

Step 1/12 : FROM microsoft/dotnet:sdk AS build-env

—> 08657316a4cd

Step 2/12 : WORKDIR /app

—> Using cache

—> 5ec5d1f4f275

Step 3/12 : COPY ./ ./

—> ed9be3bd8315

Step 4/12 : RUN dotnet restore

—> Running in dd57897dac80

Restore completed in 24.38 sec for /app/ProjectFolder/ProjectFile.csproj.

Removing intermediate container dd57897dac80

—> c8cc22c13b64

Step 5/12 : COPY . ./

—> 8e79de63d907

Step 6/12 : RUN dotnet publish -c Release -o out

—> Running in e39e1c5d411c

Microsoft ® Build Engine version 16.2.32702+c4012a063 for .NET Core

Copyright © Microsoft Corporation. All rights reserved.

大功告成!

相關文章

利用Fiddler作為網絡代理

通過網絡代理進行内網伺服器的docker安裝及鏡像下載下傳