全部产品
Search
文档中心

Serverless App Engine:Contoh pembuatan gambar

更新时间:Jul 16, 2025

Membuat gambar aplikasi SAE serupa dengan membuat gambar biasa. Jika Anda belum terbiasa, lihat contoh yang disediakan dalam topik ini.

  1. Pastikan Docker telah terinstal dan berjalan di lingkungan Anda. Verifikasi dengan menjalankan docker --version.

  2. Navigasikan ke direktori proyek Anda dan buat Dockerfile. Berikut adalah contoh Dockerfile untuk berbagai bahasa pemrograman.

    Java

    Untuk struktur direktori berikut:

    .
    ├── Dockerfile # Dockerfile yang baru dibuat
    ├── target
    │   ├── my-app.jar # Paket JAR yang dihasilkan saat membangun proyek
    ├── src # Membangun gambar hanya melibatkan Dockerfile dan paket jar, bukan kode sumber atau file konfigurasi lainnya.
    │   ├── ...
    ├── pom.xml

    Isi Dockerfile adalah:

    # Tentukan gambar dasar, menggunakan openjdk 8 sebagai contoh
    FROM openjdk:8-jdk-alpine
    
    # Salin paket jar lokal ke dalam gambar
    COPY ./target/my-app.jar /
    
    # Atur perintah startup
    ENTRYPOINT ["java", "-jar", "/my-app.jar"]

    PHP

    Untuk struktur direktori berikut:

    .
    ├── Dockerfile # Dockerfile yang baru dibuat
    ├── entrypoint.sh # Skrip startup kontainer yang baru dibuat
    ├── php
    │   ├── index.php
    │   └── phpinfo.php
    ├── nginx
    │   ├── nginx.conf
    │   ├── conf.d
    │   |   ├── default.conf
    │   ├── fastcgi_params
    │   ├── ...

    Isi Dockerfile adalah:

    # Tentukan gambar dasar, menggunakan gambar PHP-FPM sebagai contoh
    FROM php:8.2-fpm-alpine
    
    # Instal Nginx
    RUN apk add --no-cache nginx
    
    # Salin file konfigurasi Nginx ke dalam kontainer
    COPY nginx/ /etc/nginx/
    
    # Salin file PHP ke direktori kerja
    COPY php/ /var/www/html/
    
    # Salin skrip startup lokal ke dalam gambar, yang akan dieksekusi saat kontainer dimulai
    COPY entrypoint.sh /entrypoint.sh
    RUN chmod +x /entrypoint.sh
    ENTRYPOINT ["/entrypoint.sh"]
    

    Isi skrip startup entrypoint.sh adalah sebagai berikut:

    #!/bin/sh
    
    # Mulai PHP-FPM di latar belakang
    php-fpm -D
    
    # Periksa apakah PHP-FPM berhasil dimulai
    if ! pgrep "php-fpm" >/dev/null
    then
        echo "PHP-FPM gagal dimulai!"
        exit 1
    fi
    
    # Jalankan Nginx di latar depan
    nginx -g "daemon off;"

    Python

    Untuk struktur direktori berikut:

    .
    ├── Dockerfile # Dockerfile yang baru dibuat
    ├── entrypoint.sh # Skrip startup kontainer yang baru dibuat
    ├── my_app
    │   ├── requirements.txt
    │   ├── main.py
    │   ├── my_package
    │   |   ├── __init__.py
    │   |   ├── ...

    Isi Dockerfile adalah:

    # Tentukan gambar dasar, menggunakan gambar Python 3.9 sebagai contoh
    FROM python:3.9
    
    # Salin kode Python lokal ke dalam gambar
    RUN mkdir -p /my_app
    COPY my_app/ /my_app/
    
    # Instal dependensi dalam gambar sesuai dengan requirements.txt
    RUN pip install -r /my_app/requirements.txt
    
    # Salin skrip startup lokal ke dalam gambar, yang akan dieksekusi saat kontainer dimulai
    COPY entrypoint.sh /entrypoint.sh
    RUN chmod +x /entrypoint.sh
    ENTRYPOINT ["/entrypoint.sh"]
    

    Isi skrip startup entrypoint.sh adalah sebagai berikut:

    #!/bin/sh
    
    # Contoh ini memulai aplikasi di my_app/main.py menggunakan Gunicorn, di mana app adalah instance Flask. Flask dan Gunicorn ditentukan dalam requirements.txt.
    gunicorn -w 3 -b 0.0.0.0:8080 my_app.main:app

    Node.js

    Untuk proyek frontend yang diterapkan dengan Nginx, dengan struktur direktori berikut:

    .
    |- Dockerfile # Dockerfile yang baru dibuat
    |- nginx-conf # Direktori untuk file konfigurasi Nginx
    |  |- nginx.conf
    |  |- conf.d
    |  |  |- default.conf
    |  |- ...
    |- package.json
    |- src
    |  |- ...
    |- dist # Direktori untuk file sumber daya statis yang dihasilkan setelah membangun proyek
    |  |- index.html
    |  |- static
    |  |  |- ...

    Isi Dockerfile adalah:

    # Tentukan gambar dasar
    FROM nginx:1.22
    
    # Salin file sumber daya statis lokal ke jalur yang ditentukan dalam lingkungan kontainer
    COPY ./dist /usr/share/nginx/html/
    
    # Salin file konfigurasi Nginx lokal ke jalur yang ditentukan dalam lingkungan kontainer
    COPY ./nginx-conf /etc/nginx/
    
    # Gunakan perintah startup dari gambar dasar, tidak ada pengaturan tambahan yang diperlukan
  3. Bangun gambar menggunakan perintah: docker build -t <nama gambar>:<tag gambar> . (contohnya, docker build -t my-app:1.0 .)

  4. Dorong gambar ke repositori gambar. Jika repositori gambar yang ada tidak memenuhi kebutuhan Anda, gunakan Alibaba Cloud Container Registry ACR Personal Edition atau ACR Enterprise Edition.

  5. Berdasarkan jenis repositori gambar, pilih dari opsi berikut: Terapkan aplikasi menggunakan gambar dari instance ACR di bawah akun yang sama, Terapkan aplikasi menggunakan gambar dari instance ACR di bawah akun yang berbeda, atau Terapkan aplikasi menggunakan gambar dari instance non-ACR.