日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

如何基于Dockerfile構(gòu)建層

函數(shù)計算提供多種構(gòu)建層的方式,對于不包含動態(tài)鏈接庫的依賴(例如純Python庫),可直接使用控制臺在線安裝依賴的方式或使用本地構(gòu)建的方式構(gòu)建層。對于依賴中包含動態(tài)鏈接庫,或者本地環(huán)境與函數(shù)計算的運行時環(huán)境不兼容的情況,不支持通過控制臺或本地構(gòu)建的方式構(gòu)建層,只能基于Dockerfile構(gòu)建層。本文以Node.js安裝Puppeteer依賴為例,介紹如何基于Dockerfile構(gòu)建層。

注意事項

構(gòu)建層時,各個語言的依賴庫建議按照頁面創(chuàng)建自定義層的說明打包到層ZIP包的指定目錄下。例如,Python庫打包到層ZIP包的/python目錄下。如果依賴庫中包含動態(tài)鏈接庫,建議將動態(tài)鏈接庫放到層ZIP包的/lib目錄下,上傳到函數(shù)計算運行時環(huán)境后,會自動解壓到/opt/lib目錄。使用內(nèi)置運行時,會默認將目錄/opt/lib添加到路徑LD_LIBRARY_PATH,而使用自定義運行時,需要手動添加。

構(gòu)建Puppeteer層

步驟一:準備Dockerfile文件

示例如下。

# 指定構(gòu)建鏡像的基礎(chǔ)鏡像,推薦使用build-latest的鏡像進行構(gòu)建。
# 在本地構(gòu)建層時,使用的基礎(chǔ)鏡像的運行時版本需要和函數(shù)的運行時版本保持一致。
# 中國內(nèi)地用戶建議使用registry.cn-beijing.aliyuncs.com倉庫的基礎(chǔ)鏡像。
FROM aliyunfc/runtime-nodejs14:build-latest

# 聲明環(huán)境變量,并指定工作目錄/tmp。
ENV PATH /opt/bin:$PATH
ENV LD_LIBRARY_PATH /opt/lib
ENV NODE_PATH /opt/nodejs/node_modules
WORKDIR /tmp

# 安裝Puppeteer庫到/opt/nodejs目錄。
COPY ./package.json /opt/nodejs/
RUN cd /opt/nodejs \
    && npm --registry https://registry.npmmirror.com i

# 將需要安裝到系統(tǒng)依賴庫的.deb文件下載到/tmp/install/archives目錄。
RUN mkdir -p /opt/lib /tmp/install
RUN apt-get update && apt-get install -y -d -o=dir::cache=/tmp/install \
    libblas3 fonts-liberation libappindicator3-1 libasound2 libatk-bridge2.0-0 \
    libgtk-3-0 libnspr4 libnss3 libpangocairo-1.0-0 libxcb-dri3-0 \
    libx11-xcb1 libxcb1 libxss1 libxtst6 lsb-release \
    xdg-utils libatspi2.0-0 libatk1.0-0 libxkbcommon0 libepoxy0 \
    libglapi-mesa libnspr4 libgbm-dev \
    --reinstall --no-install-recommends

RUN for f in $(ls /tmp/install/archives/*.deb); do \
        echo "Preparing to unpack ${f##*/}"; \
        cd /tmp/install/archives; \
        dpkg-deb -x ${f##*/} /tmp/install; \
    done;

# 拷貝安裝的.so文件到/opt/lib目錄。
RUN cp -r /tmp/install/usr/bin /opt/; \
    cp -r /tmp/install/usr/lib/x86_64-linux-gnu/* /opt/lib/

# 將/opt/lib目錄下的文件打包成ZIP格式的壓縮包。注意添加-y參數(shù)保留軟鏈接。
# .[^.]* 表示包含隱藏文件并排除父目錄。
RUN cd /opt \
    && zip -ry layer.zip * .[^.]*

CMD ["bash"]

步驟二:構(gòu)建層ZIP包

  1. 執(zhí)行以下命令,使用Dockerfile文件打包鏡像。

    sudo docker build -t ${layer-image-name} -f Dockerfile .
  2. 執(zhí)行以下命令,將層ZIP包從鏡像中拷貝出來。

    sudo docker run --rm -v $(pwd):/tmp ${layer-image-name} sh -c "cp /opt/layer.zip /tmp/"

步驟三:創(chuàng)建自定義層

層ZIP包構(gòu)建完成后,您可以通過函數(shù)計算控制臺或者Serverless Devs創(chuàng)建層。層上傳方式選擇通過ZIP包上傳,具體操作,請參見創(chuàng)建自定義層

函數(shù)計算的基本鏡像

以下列舉函數(shù)計算針對不同的語言及開發(fā)環(huán)境預(yù)置的基本鏡像。實際使用時,您可以從對應(yīng)鏡像倉庫路徑直接拉取,拉取腳本如docker pull registry.cn-beijing.aliyuncs.com/aliyunfc/runtime-python3.10:latest

鏡像名稱

鏡像倉庫路徑

python3.10

registry.cn-beijing.aliyuncs.com/aliyunfc/runtime-python3.10

python3.9

registry.cn-beijing.aliyuncs.com/aliyunfc/runtime-python3.9

python3.6

registry.cn-beijing.aliyuncs.com/aliyunfc/runtime-python3.6

nodejs16

registry.cn-beijing.aliyuncs.com/aliyunfc/runtime-nodejs16

nodejs14

registry.cn-beijing.aliyuncs.com/aliyunfc/runtime-nodejs14

nodejs12

registry.cn-beijing.aliyuncs.com/aliyunfc/runtime-nodejs12

java11

registry.cn-beijing.aliyuncs.com/aliyunfc/runtime-java11

java8

registry.cn-beijing.aliyuncs.com/aliyunfc/runtime-java8

dotnetcore2.1

registry.cn-beijing.aliyuncs.com/aliyunfc/runtime-dotnetcore2.1

go1

registry.cn-beijing.aliyuncs.com/aliyunfc/runtime-go1

custom

registry.cn-beijing.aliyuncs.com/aliyunfc/runtime-custom

custom.debian10

registry.cn-beijing.aliyuncs.com/aliyunfc/runtime-custom.debian10

更多信息,請參見函數(shù)計算基本鏡像

后續(xù)操作

層創(chuàng)建完成后,您可以通過函數(shù)計算控制臺或Serverless Devs將其綁定到函數(shù),以便函數(shù)訪問層中提供的資源。具體操作,請參見配置自定義層