Secara default, fitur manajemen aplikasi menggunakan Heroku Cloud Native Buildpacks (CNBs) dengan versi heroku/builder:24 untuk membangun aplikasi. Topik ini menjelaskan cara menggunakan Heroku CNBs untuk mengonfigurasi aplikasi dalam berbagai bahasa pemrograman, termasuk Java, Python, Go, dan Node.js.
Catatan tentang konfigurasi gambar kontainer dan kontainer
Konfigurasikan variabel lingkungan saat Anda membangun gambar kontainer
Tambahkan file
project.tomluntuk menentukan variabel lingkungan saat Anda membangun gambar kontainer. Sebagai contoh, tentukanMAVEN_OPTS.CatatanUntuk informasi lebih lanjut tentang
project.toml, lihat bagian Pengenalan project.toml dari topik ini.Konfigurasikan variabel lingkungan untuk meneruskan parameter waktu proses kontainer
Parameter waktu proses kontainer diteruskan ke aplikasi dalam variabel lingkungan. Pastikan kode Anda dapat membaca parameter dari variabel lingkungan. Saat menyebarkan kontainer, Anda dapat menentukan variabel lingkungan untuk kontainer tersebut. Manajemen aplikasi menyimpan variabel lingkungan dalam file
envdan meneruskannya ke proses kontainer melalui opsi--env-file.
Konfigurasi aplikasi
Repositori kode memungkinkan Anda langsung menyebarkan aplikasi hanya dalam bahasa pemrograman berikut. Bagian ini menjelaskan cara mengonfigurasi aplikasi dalam berbagai bahasa pemrograman.
Java
Persyaratan untuk aplikasi
Persyaratan berikut berlaku untuk aplikasi Java:
Direktori root repositori kode harus berisi file
pom.xml.Anda dapat menggunakan Maven atau Gradle untuk membangun kode aplikasi.
Versi JDK aplikasi harus didukung.
Catatan konfigurasi
Versi OpenJDK
Versi utama OpenJDK 8, 11, 17, 21, dan 22 didukung. CNBs menginstal versi minor terbaru dari versi utama OpenJDK yang ditentukan.
CatatanJika Anda tidak menentukan versi OpenJDK, CNBs secara default menginstal versi dukungan jangka panjang (LTS) terbaru, seperti versi minor terbaru dari OpenJDK 8, 11, 17, atau 21.
Anda dapat menambahkan file properti Java
system.propertiesfile properti Java ke direktori root aplikasi untuk menentukan versi OpenJDK. Contoh kode berikut menunjukkan cara menentukan OpenJDK 21:java.runtime.version=21Opsi Maven
Anda dapat menggunakan variabel lingkungan
MAVEN_OPTSuntuk menerapkan pengaturan Maven. Tambahkan fileproject.tomluntuk menentukan variabel lingkungan ini.Secara default, CNBs hanya mendukung Maven 3.9. Jika aplikasi Anda bergantung pada versi Maven lainnya, gunakan Maven Wrapper (mvnw). CNBs menggunakan
mvnwdi direktori root proyek untuk membangun aplikasi.Jalankan perintah berikut untuk menggunakan Maven Wrapper:
mvn wrapper:wrapper # Hasilkan direktori .mvn, mvnw, dan file mvnw.cmd. git add .mvn mvnw mvnw.cmd git commit -m "dukungan maven wrapper" git push origin # Kirim cabang ke repositori kode.Procfile
File
Procfilemendeklarasikan tipe proses dan perintah yang digunakan untuk memulai aplikasi. Untuk informasi lebih lanjut, lihat bagian Pengenalan Procfiles dari topik ini. Untuk aplikasi Spring Boot, fileProcfilemendefinisikan cara platform memulai aplikasi Spring Boot. Contoh kode berikut menunjukkan fileProcfiletipikal untuk aplikasi Spring Boot:web: java -Dserver.port=$PORT $JAVA_OPTS -jar target/demo-0.0.1-SNAPSHOT.jar
Proyek contoh
GitHub: github-java-springboot-demo
Gitee: gitee-java-springboot-demo
Untuk informasi lebih lanjut, lihat buildpacks-jvm.
Python
Persyaratan untuk aplikasi
Untuk aplikasi Python, direktori root kode sumber harus disimpan dalam file requirements.txt atau poetry.lock.
Catatan konfigurasi
Versi Python
Secara default, CNBs menginstal versi Python terbaru, yaitu 3.13. Jika Anda ingin menggunakan versi Python lainnya, tambahkan file
.python-versionke direktori root aplikasi dan tentukan versi Python yang ingin Anda gunakan. Contoh kode:$ cat .python-version 3.13Procfile
File
Procfileadalah file teks di direktori root aplikasi. Untuk aplikasi Python, Procfile mendeklarasikan tipe proses dan perintah yang digunakan untuk memulai aplikasi. Contoh kode berikut menunjukkan fileProcfileuntuk aplikasi Python:web: gunicorn --config gunicorn.conf.py gettingstarted.wsgiCatatanProcfile bukan file yang wajib untuk aplikasi sederhana. Namun, kami sangat menyarankan Anda menambahkan Procfile ke aplikasi Python. Untuk informasi lebih lanjut, lihat bagian Pengenalan Procfiles dari topik ini.
Proyek contoh
GitHub: github-python-falcon-demo
Gitee: gitee-python-falcon-demo
Untuk informasi lebih lanjut, lihat buildpacks-python.
Go
Persyaratan untuk aplikasi
Persyaratan berikut berlaku untuk aplikasi Go:
Direktori root repositori kode harus berisi file
go.mod. Namamoduledi filego.modharus berisi setidaknya satu garis miring maju (/).Aplikasi Go mendukung Go 1.16 dan versi lebih baru untuk kompilasi. Aplikasi Go juga mendukung modul Go untuk menginstal dependensi.
CatatanCNBs hanya mendukung manajemen dependensi Go, seperti modul Go. Pengelola dependensi pihak ketiga seperti dep, godep, govendor, dan glide tidak didukung.
Catatan konfigurasi
Versi Go
CNBs membaca versi Go dari baris
godi filego.mod.Sebagai contoh, CNB memilih rilis terbaru dari Go 1.17. Contoh kode:
go 1.17Manajemen dependensi
Jika direktori root repositori kode berisi file
vendor/modules.txt, CNBs akan mencoba menggunakan modul Go di direktorivendor, alih-alih mengunduhnya.Jika direktori root repositori kode tidak berisi file
vendor/modules.txt, CNBs mengunduh modul Go sebelum kompilasi.
Instalasi paket
CNBs membangun semua paket
mainyang terdeteksi oleh proyek.
Proyek contoh
GitHub: github-go-web-demo
Gitee: gitee-go-web-demo
Untuk informasi lebih lanjut, lihat buildpacks-go.
Node.js
Persyaratan untuk aplikasi
Persyaratan berikut berlaku untuk aplikasi Node.js:
Selama proses pembuatan, file
package.jsonyang valid harus disiapkan untuk CNBs.Untuk menginstal dependensi, Anda harus menyiapkan file kunci
npm,yarn, ataupnpm lockyang valid.
Catatan konfigurasi
Versi Node.js
Tentukan bidang engines.node di file package.json untuk menentukan versi Node.js. Jika Anda tidak menentukan versi Node.js, versi LTS terbaru akan digunakan.
Tentukan versi Node.js di file package.json. Sebagai contoh, tentukan versi terbaru di baris ke-20. Contoh kode:
{"
engines":{"
node":"20. x"
}
}Bidang ini mendukung sintaks yang sama untuk mengontrol versi semantik seperti file package.json. Kami sangat menyarankan Anda menentukan versi Node.js untuk mencegah perubahan yang tidak terduga.
Proyek contoh
GitHub: github-nodejs-express-demo
Gitee: gitee-nodejs-express-demo
Untuk informasi lebih lanjut, lihat buildpacks-nodejs.
PHP
Persyaratan aplikasi
Jika bahasa pemrograman adalah PHP, aplikasi harus memenuhi persyaratan berikut:
Mendukung PHP 8.2, PHP 8.3, dan PHP 8.4.
Direktori root repositori aplikasi harus berisi file
composer.jsondancomposer.lock.
Konfigurasi
PHP
Tentukan versi runtime PHP di composer.json. Contoh kode berikut menentukan PHP 8.2.0 dan versi lebih baru.
{
"require": {
"php": "^8.2.0"
}
}Contoh
GitHub: github-php-demo
Gitee: gitee-php-demo
Untuk informasi lebih lanjut, lihat buildpacks-php dan php-support.