Membuat gambar aplikasi SAE serupa dengan membuat gambar biasa. Jika Anda belum terbiasa, lihat contoh yang disediakan dalam topik ini.
Pastikan Docker telah terinstal dan berjalan di lingkungan Anda. Verifikasi dengan menjalankan
docker --version.Navigasikan ke direktori proyek Anda dan buat
Dockerfile. Berikut adalah contohDockerfileuntuk 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.xmlIsi 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:appNode.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 diperlukanBangun gambar menggunakan perintah:
docker build -t <nama gambar>:<tag gambar> .(contohnya,docker build -t my-app:1.0 .)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.
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.