All Products
Search
Document Center

Function Compute:Cara membuat layer dari Dockerfile

Last Updated:Apr 01, 2026

Gunakan Dockerfile untuk membuat layer jika dependensi Anda mencakup pustaka tautan dinamis (.so) atau jika lingkungan lokal Anda tidak kompatibel dengan lingkungan runtime Function Compute. Untuk paket bahasa murni tanpa dependensi native (seperti paket Python murni), instal langsung melalui Konsol Function Compute atau di mesin lokal Anda.

Topik ini menjelaskan langkah-langkah pembuatan layer Puppeteer untuk runtime Node.js sebagai contoh.

Persyaratan struktur direktori paket

Saat mengemas dependensi ke dalam file ZIP layer, letakkan di direktori yang sesuai dengan runtime Anda. Misalnya, masukkan pustaka Python ke dalam direktori /python pada paket ZIP layer.

Untuk dependensi yang mencakup pustaka tautan dinamis, letakkan file .so di direktori /lib dalam file ZIP. Setelah layer diunggah ke Function Compute, file-file tersebut akan secara otomatis diekstrak ke /opt/lib.

  • Runtime bawaan: /opt/lib secara otomatis ditambahkan ke LD_LIBRARY_PATH.

  • Runtime kustom: Tambahkan /opt/lib ke LD_LIBRARY_PATH secara manual.

Membuat layer Puppeteer

Langkah 1: Siapkan Dockerfile

Buat Dockerfile dengan konten berikut:

# Gunakan image build-latest dengan versi runtime yang sama seperti fungsi Anda.
# Jika Anda berada di Tiongkok daratan, tarik dari registry.cn-beijing.aliyuncs.com.
FROM aliyunfc/runtime-nodejs14:build-latest

# Atur variabel lingkungan dan direktori kerja.
ENV PATH /opt/bin:$PATH
ENV LD_LIBRARY_PATH /opt/lib
ENV NODE_PATH /opt/nodejs/node_modules
WORKDIR /tmp

# Instal Puppeteer ke /opt/nodejs.
COPY ./package.json /opt/nodejs/
RUN cd /opt/nodejs \
    && npm --registry https://registry.npmmirror.com i

# Unduh file dependensi sistem (.deb) ke /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

# Ekstrak file .so dari setiap paket .deb.
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;

# Salin file .so hasil ekstraksi ke /opt/lib.
RUN cp -r /tmp/install/usr/bin /opt/; \
    cp -r /tmp/install/usr/lib/x86_64-linux-gnu/* /opt/lib/

# Kemas /opt menjadi layer.zip.
# Opsi -y mempertahankan symbolic link. Pola .[^.]* menyertakan file tersembunyi tanpa direktori induk.
RUN cd /opt \
    && zip -ry layer.zip * .[^.]*

CMD ["bash"]
Versi base image runtime harus sesuai dengan versi runtime fungsi Anda. Gunakan tag build-latest untuk pembuatan layer.

Langkah 2: Buat file ZIP layer

  1. Buat image Docker dari Dockerfile:

    sudo docker build -t <layer-image-name> -f Dockerfile .
  2. Salin file ZIP layer dari image tersebut:

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

    Perintah ini memasang direktori saat ini sebagai /tmp di dalam kontainer, lalu menyalin layer.zip ke sana. Setelah perintah selesai, layer.zip akan muncul di direktori saat ini. Opsi --rm menghapus kontainer secara otomatis.

Langkah 3: Buat layer kustom

Di Konsol Function Compute atau menggunakan Serverless Devs, buat layer dan atur Layer Upload Method ke Upload Layer in ZIP Package. Untuk langkah-langkah lengkapnya, lihat Buat layer kustom.

Catatan

Function Compute menyediakan Puppeteer sebagai lapisan publik yang dapat Anda gunakan langsung. Untuk informasi lebih lanjut, lihat Contoh 1: Program contoh yang menggunakan Node.js 16 dan Puppeteer untuk mengambil tangkapan layar halaman web.

Base image

Function Compute menyediakan base image prasetel untuk setiap runtime yang didukung. Tarik image menggunakan format berikut:

docker pull aliyunfc/<runtime-name>:<tag>
# Contoh:
docker pull aliyunfc/runtime-python3.10:latest

Base image yang tersedia:

RuntimeTag image
Python 3.10aliyunfc/runtime-python3.10
Python 3.9aliyunfc/runtime-python3.9
Python 3.6aliyunfc/runtime-python3.6
Node.js 16aliyunfc/runtime-nodejs16
Node.js 14aliyunfc/runtime-nodejs14
Node.js 12aliyunfc/runtime-nodejs12
Java 11aliyunfc/runtime-java11
Java 8aliyunfc/runtime-java8
.NET Core 2.1aliyunfc/runtime-dotnetcore2.1
Go 1aliyunfc/runtime-go1
Customaliyunfc/runtime-custom
Custom (Debian 10)aliyunfc/runtime-custom.debian10

Untuk daftar lengkap image dan tag yang tersedia, lihat fc-docker di GitHub.

Langkah selanjutnya

Setelah membuat layer, bind layer tersebut ke fungsi di Konsol Function Compute atau menggunakan Serverless Devs. Untuk detailnya, lihat Konfigurasi layer kustom.