.net core容器添加時區和libgdi+和下載加速

國內.net core鏡像下載加速

比如對於mcr.microsoft.com/dotnet/core/aspnet:3.1,下載是走的azure全球cdn,國內訪問很慢。
國內訪問可以把mcr.microsoft.com改爲mcr.azk8s.cn
如docker pull mcr.microsoft.com/dotnet/core/aspnet:3.1改爲docker pull mcr.azk8s.cn/dotnet/core/aspnet:3.1速度就會快上很多

 

修改時區和安裝libgdi+

根據基礎鏡像不同添加的命令也不同

對於alpine,比如mcr.azk8s.cn/dotnet/core/aspnet:3.1-alpine是以alpine爲基礎鏡像的,alpine是最小系統鏡像,所以用這個做基礎鏡像能將鏡像整體大小控制的得很小。

alpine的包管理器是apk,安裝軟件命令是apk add

RUN sed -i "s@http://dl-cdn.alpinelinux.org/@https://repo.huaweicloud.com/@g" repositories  \
    && apk --no-cache add tzdata zeromq \
    && ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
    && echo 'Asia/Shanghai' > /etc/timezone

第一行是替換軟件源爲華爲雲鏡像源

第二行是安裝tzdata和zeromq

第三行是軟鏈接上海時區到/etc/localtime

第四行是寫入上海到/etc/timezone

 

安裝libgdi+

RUN sed -i "s@http://dl-cdn.alpinelinux.org/@https://repo.huaweicloud.com/@g" /etc/apk/repositories &&  \ 
    apk --no-cache add terminus-font tzdata zeromq && \
    apk --no-cache add libgdiplus --update-cache --repository 'https://mirrors.huaweicloud.com/alpine/edge/testing/' --allow-untrusted && \
    ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
    echo 'Asia/Shanghai' > /etc/timezone && \
    ln -s /usr/lib/libgdiplus.so.0.0.0  /usr/lib/libgdiplus.so

和上邊不同的多了第三行和最後一行
第三行是安裝libgdi+  由於libgdi+在alpine的軟件源裏是屬於測試版的,所以要指定倉庫來源爲華爲雲的測試版軟件源
最後一行,軟連接libgdiplus.so.0.0.0 爲libgdiplus.so

 

安裝了libgdi+和修改時區的完整Dockerfile

FROM mcr.azk8s.cn/dotnet/core/aspnet:3.1-alpine AS base
WORKDIR /app
EXPOSE 80
COPY . .
RUN sed -i "s@http://dl-cdn.alpinelinux.org/@https://repo.huaweicloud.com/@g" /etc/apk/repositories &&  \ 
    apk --no-cache add terminus-font tzdata zeromq && \
    apk --no-cache add libgdiplus --update-cache --repository 'https://mirrors.huaweicloud.com/alpine/edge/testing/' --allow-untrusted && \
    ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
    echo 'Asia/Shanghai' > /etc/timezone && \
    ln -s /usr/lib/libgdiplus.so.0.0.0  /usr/lib/libgdiplus.so
ENTRYPOINT ["dotnet", "MyHost.dll"]

僅修改時區的Dockerfile

 1 FROM mcr.azk8s.cn/dotnet/core/aspnet:3.1-alpine AS base
 2 WORKDIR /app
 3 EXPOSE 80 7 COPY . .18 RUN sed -i "s@http://dl-cdn.alpinelinux.org/@https://repo.huaweicloud.com/@g" repositories  \
19     && apk --no-cache add tzdata zeromq \
20     && ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
21     && echo 'Asia/Shanghai' > /etc/timezone
22 ENTRYPOINT ["dotnet", "MarketingManagement.HttpApi.Host.dll"]

 

.net core的默認基礎鏡像是debian,包管理器是apt,和ubuntu一致

直接上完整dockerfile

安裝libgdi+ 修改時區版

FROM mcr.azk8s.cn/dotnet/core/aspnet:3.1 AS base
WORKDIR /app
EXPOSE 80
COPY . .
#設置時區
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

#安裝libgdi+
RUN ln -s /lib/x86_64-linux-gnu/libdl-2.24.so /lib/x86_64-linux-gnu/libdl.so RUN sed -i "s@http://deb.debian.org@http://repo.huaweicloud.com@g" /etc/apt/sources.list && \ sed -i "s@http://security.debian.org@http://repo.huaweicloud.com@g" /etc/apt/sources.list && \ apt-get update && \ apt-get install -y --allow-unauthenticated \ apt-utils \ libgdiplus \ nano \ && rm -rf /var/lib/apt/lists/* ENTRYPOINT ["dotnet", "MyHost.dll"]

因爲需要更新軟件包列表,整體大小也比alpine大很多,所以構建速度明顯比alpine慢很多

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章