Anda dapat menggunakan pembuatan multi-tahap dari Dockerfile dan layanan pembuatan gambar dari Alibaba Cloud Container Registry untuk secara aman dan cepat membangun gambar berukuran kecil untuk aplikasi Java.
Prasyarat
Layanan Container Registry telah diaktifkan.
Docker telah terinstal. Untuk informasi lebih lanjut, lihat Instal Docker.
Aplikasi Java telah dibuat, dan kode sumbernya di-hosting dalam repositori di GitHub, GitLab, atau Bitbucket.
CatatanAnda dapat menggunakan proyek Java berbasis Maven yang di-hosting di GitHub untuk mencoba pembuatan multi-tahap.
Informasi latar belakang
Masalah Umum dalam Pembuatan Gambar Docker
Fitur pembuatan gambar dari Container Registry menggunakan Dockerfile untuk membangun gambar akhir dari aplikasi. Selama proses ini, Anda mungkin menghadapi masalah berikut:
Menulis Dockerfile sulit.
Ketika Anda terbiasa menggunakan kerangka kerja kuat dari bahasa pemrograman, terutama Java, untuk membangun aplikasi, Anda mungkin merasa sulit menulis Dockerfile untuk membangun gambar aplikasi.
Gambar akhir mungkin besar ukurannya.
Saat Anda membangun gambar, Anda mungkin menyertakan proses kompilasi, pengujian, dan pengemasan aplikasi dalam Dockerfile yang sama. Setiap perintah dalam Dockerfile membuat lapisan gambar, yang memperumit struktur gambar dan memperbesar ukuran gambar.
Kode sumber mungkin bocor.
Anda mungkin mengemas kode sumber aplikasi Anda dalam gambar akhir, yang dapat menyebabkan kebocoran kode.
Manfaat Pembuatan Multi-Tahap
Ketika Anda menggunakan pembuatan multi-tahap dalam Dockerfile untuk membangun gambar untuk aplikasi yang dikembangkan menggunakan bahasa kompilasi seperti Java, Anda dapat memperoleh manfaat berikut:
Gambar akhir dibangun dengan cara yang aman.
Pada tahap pertama pembuatan gambar, Anda harus menentukan gambar dasar yang sesuai. Kemudian, Anda perlu menyalin kode sumber ke gambar dasar, mengunduh dependensi aplikasi, mengkompilasi kode sumber, menguji aplikasi, dan mengemas aplikasi. Pada tahap kedua, Anda harus menentukan gambar dasar lain yang sesuai dan menyalin file dependensi waktu proses yang dihasilkan pada tahap pertama ke gambar dasar. Dengan cara ini, gambar akhir tidak berisi kode sumber.
Gambar akhir memiliki lebih sedikit lapisan dan ukuran yang lebih kecil.
Gambar akhir hanya berisi gambar dasar dan artefak yang sudah dikompilasi. Akibatnya, gambar akhir terdiri dari beberapa lapisan dan membutuhkan ruang penyimpanan yang kecil.
Gambar akhir dibangun dengan kecepatan tinggi.
Anda dapat menggunakan alat pembuatan seperti Docker dan Buildkit untuk menjalankan beberapa proses pembuatan secara bersamaan, yang mempercepat pembuatan gambar.
Langkah 1: Menghubungkan repositori kode sumber ke instance Container Registry
Masuk ke konsol Container Registry dan otorisasi Container Registry untuk mengakses repositori kode sumber. Dalam contoh ini, Container Registry diberi otorisasi untuk mengakses repositori kode sumber di GitHub.
Masuk ke konsol Container Registry.
Di bilah navigasi atas, pilih wilayah.
Pada halaman Instances, klik instance Personal Edition yang ingin Anda kelola.
Di panel navigasi kiri halaman manajemen instance Container Registry Personal Edition, pilih .
Di kolom Actions yang sesuai dengan GitHub, klik Bind Account. Di kotak dialog GitHub, klik Go to the source code repository to bind account. Pada halaman yang muncul, masukkan nama pengguna dan kata sandi Anda untuk masuk ke GitHub.
Di halaman otorisasi, klik Authorize AliyunDeveloper. Jika akun berhasil di-bind, pesan akan muncul untuk menunjukkan bahwa akun Anda telah di-bind ke GitHub. Buka halaman Code Source. Periksa apakah status layanan GitHub muncul sebagai Bound.

Langkah 2: Membuat repositori gambar
Masuk ke konsol Container Registry.
Di bilah navigasi atas, pilih wilayah.
Pada halaman Instances, klik instance Personal Edition yang ingin Anda kelola.
Di panel navigasi kiri halaman manajemen instance Container Registry Personal Edition, pilih . Pada halaman Repositories, klik Create Repository.
Konfigurasikan parameter repositori gambar.
Parameter
Deskripsi
Contoh
Region
Wilayah tempat repositori gambar berada.
Tiongkok (Hangzhou)
Namespace
Namespace tempat repositori gambar berada. Sebuah repositori gambar hanya milik satu namespace, tetapi sebuah namespace dapat berisi banyak repositori gambar.
test23432
Repository Name
Nama repositori gambar.
test
Repository Type
Tipe repositori gambar. Nilai valid: Public dan Private. Anda hanya dapat mendorong gambar ke repositori gambar setelah Anda masuk ke repositori gambar, terlepas dari tipe repositori. Repositori publik dapat diakses oleh siapa saja di Internet. Untuk mencegah kehilangan data, kami sarankan Anda memilih Private.
Public: Anda dapat menarik gambar dari repositori gambar tanpa perlu masuk ke repositori gambar.
Private: Anda hanya dapat menarik gambar dari repositori gambar setelah Anda masuk ke repositori gambar pada klien Docker.
Private
Summary
Deskripsi singkat repositori gambar.
-
Description
Deskripsi rinci repositori gambar. Format Markdown didukung.
Gunakan Dockerfile yang telah dibuat dan fitur pembuatan gambar dari Container Registry untuk membangun, mengemas, dan menjalankan gambar.
Klik Next. Pada langkah Code Source, tentukan sumber kode dan konfigurasikan pengaturan pembuatan.
Parameter
Deskripsi
Code Source
Pada tab GitHub bagian Code Source, klik Bind Account dan kemudian hubungkan repositori kode sumber yang Anda hubungkan di "Langkah 2: Otorisasi Container Registry untuk mengakses repositori kode sumber".
Build Settings
Dalam contoh ini, pilih Automatically Build Images When Code Changes dan Build With Servers Deployed Outside Chinese Mainland.
Automatically Build Images When Code Changes: Aturan pembuatan dipicu secara otomatis saat kode dikomit dari cabang.
Build With Servers Deployed Outside Chinese Mainland: Gambar dibangun di pusat data di luar daratan Tiongkok dan kemudian didorong ke repositori gambar di wilayah yang ditentukan.
Build Without Cache: Sistem menarik gambar dasar setiap kali gambar akan dibangun. Ini mungkin memperlambat proses pembuatan.
Klik Create Repository.
Setelah repositori gambar dibuat, Anda akan dialihkan ke halaman detail repositori gambar. Anda dapat melihat informasi dasar tentang repositori gambar di halaman detail.
Di panel navigasi kiri halaman detail repositori gambar, klik ikon
di sebelah nama repositori. Pada halaman Repositories, Anda dapat melihat repositori gambar yang Anda buat. Jika Normal ditampilkan di kolom Status repositori gambar, repositori gambar telah dibuat.
Langkah 3: Membangun gambar
Di panel navigasi kiri, pilih . Pada halaman Repositories, temukan repositori gambar. Klik nama repositori atau klik Manage di kolom Actions untuk pergi ke halaman detail repositori.
Di panel navigasi kiri, klik Build. Pada halaman yang muncul, klik Add Build Rule di bagian Build Rules.
Di kotak dialog Add Build Rule, atur parameter sesuai kebutuhan.
Parameter
Deskripsi
Contoh
Type
Tipe konten yang didorong ke repositori kode sumber untuk memicu aturan pembuatan. Nilai valid: Branch dan Tag.
Branch
Branch/Tag
Cabang kode atau tag yang memicu aturan pembuatan.
master
Build Context Directory
Direktori Dockerfile. Direktori yang ditentukan adalah direktori relatif, dan direktori root cabang kode berfungsi sebagai direktori induk. Dalam contoh ini, direktori Dockerfile adalah /Dockerfile. Masukkan /.
/
Dockerfile Filename
Nama Dockerfile. Nilai default: Dockerfile. Misalnya, jika jalur Dockerfile adalah /Dockerfile, tentukan Dockerfile sebagai nilai parameter ini.
Dockerfile
Image Tag
Tag gambar yang akan dibangun.
V1.0.0
Klik Confirm.
Di bagian Build Rules, temukan aturan yang Anda buat dan klik Build di kolom Actions yang sesuai dengan aturan tersebut.
Setelah Anda memulai pembuatan, catatan pembuatan dihasilkan di bagian Build Log. Ketika status catatan pembuatan menjadi Successful, gambar telah dibangun.
Hasil
Periksa apakah gambar telah dibangun
Di panel navigasi kiri halaman manajemen instance Container Registry Personal Edition, pilih Repository > Repositories. Klik nama repositori atau klik Manage di kolom Actions yang sesuai dengan repositori. Di panel navigasi kiri halaman detail repositori, klik Tags untuk melihat gambar yang Anda buat.
Jalankan gambar di Docker
Container Registry menyesuaikan proses pembuatan instance Personal Edition mulai 9 September 2024. Untuk informasi lebih lanjut, lihat Batasan pada Instance Personal Edition Baru. Anda dapat memilih metode push dan pull gambar berdasarkan versi instance Container Registry Personal Edition Anda.
Instance Personal Edition versi baru
Jalankan perintah berikut di Docker dan gunakan kata sandi yang Anda atur saat menyiapkan lingkungan dan sumber daya untuk masuk ke Alibaba Cloud Docker Registry. Ganti
acr_e2******@test.aliyunid.comdalam perintah dengan nama lengkap akun Alibaba Cloud Anda. Ganticn-hangzhoudengan wilayah tempat instance Personal Edition Anda berada. Ganticrpi-xxxxdengan ID instance Personal Edition Anda. Masuk ke konsol Container Registry dan klik kartu instance Personal Edition. Pada halaman Overview, klik tab Instance Information untuk mendapatkan ID instance Personal Edition.docker login --username=acr_e2******@test.aliyunid.com crpi-xxxx.cn-hangzhou.personal.cr.aliyuncs.comJalankan perintah berikut untuk menarik gambar:
docker pull crpi-xxxx.cn-hangzhou.personal.cr.aliyuncs.com/test23432/test:V1.0.0Jalankan perintah berikut untuk melihat gambar Docker:
docker imagesJalankan perintah berikut untuk menjalankan gambar:
docker run -ti crpi-xxxx.cn-hangzhou.personal.cr.aliyuncs.com/test23432/test:V1.0.0 Hello World!
Instance Personal Edition versi lama
Jalankan perintah berikut di Docker dan gunakan kata sandi yang Anda atur saat menyiapkan lingkungan dan sumber daya untuk masuk ke Alibaba Cloud Docker Registry. Ganti
acr_e2******@test.aliyunid.comdalam perintah dengan nama lengkap akun Alibaba Cloud Anda. Ganticn-hangzhoudengan wilayah tempat instance Personal Edition Anda berada.docker login --username=acr_e2******@test.aliyunid.com registry.cn-hangzhou.cr.aliyuncs.comJalankan perintah berikut untuk menarik gambar. Ganti
cn-hangzhoudalam perintah dengan wilayah tempat instance Personal Edition Anda berada. Gantitest23432dengan namespace yang Anda gunakan. Gantitest:V1.0.0dengan nama repositori dan tag gambar yang Anda gunakan.docker pull registry.cn-hangzhou.cr.aliyuncs.com/test23432/test:V1.0.0Jalankan perintah berikut untuk melihat gambar Docker:
docker imagesJalankan perintah berikut untuk menjalankan gambar. Ganti
cn-hangzhoudalam perintah dengan wilayah tempat instance Personal Edition Anda berada. Gantitest23432dengan namespace yang Anda gunakan. Gantitest:V1.0.0dengan nama repositori dan tag gambar yang Anda gunakan.docker run -ti registry.cn-hangzhou.cr.aliyuncs.com/test23432/test:V1.0.0 Hello World!