Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Apache Tomcat adalah implementasi sumber terbuka yang populer dari teknologi Java Servlet dan Java Server. Artikel ini menunjukkan kepada Anda cara membuat kontainer dengan Apache Tomcat dan aplikasi Web sederhana, menyebarkan kontainer ke kluster Service Fabric yang menjalankan Linux, dan menyambungkan ke aplikasi Web.
Untuk mempelajari selengkapnya tentang Apache Tomcat, lihat beranda Apache Tomcat.
Prasyarat
Komputer pengembangan yang berjalan:
Registri kontainer di Azure Container Registry. Anda dapat membuat registri kontainer di langganan Azure Anda menggunakan portal Microsoft Azure atau Azure CLI.
Membuat gambar Tomcat dan menjalankannya secara lokal
Ikuti langkah-langkah di bagian ini untuk membangun gambar Docker berdasarkan gambar Apache Tomcat dan aplikasi Web sederhana lalu jalankan dalam kontainer di sistem lokal Anda.
Kloning repositori sampel memulai dengan Service Fabric untuk Java di komputer pengembangan Anda.
git clone https://github.com/Azure-Samples/service-fabric-java-getting-started.git
Ubah direktori ke direktori sampel server Apache Tomcat (service-fabric-java-getting-started/container-apache-tomcat-web-server-sample):
cd service-fabric-java-getting-started/container-apache-tomcat-web-server-sample
Buat file Docker berdasarkan gambar Tomcat resmi yang terletak di Docker Hub dan sampel server Tomcat. Di direktori service-fabric-java-getting-started/container-apache-tomcat-web-server-sample , buat file bernama Dockerfile (tanpa ekstensi file). Tambahkan yang berikut ini ke Dockerfile dan simpan perubahan Anda:
FROM library/tomcat EXPOSE 8080 COPY ./ApacheTomcat /usr/local/tomcat
Lihat referensi Dockerfile untuk informasi selengkapnya.
Masuk ke Docker dan jalankan
docker build
perintah untuk membuat gambar yang menjalankan aplikasi web Anda:docker login docker build . -t tomcattest
Perintah ini membangun gambar baru menggunakan instruksi di Dockerfile, penamaan (-t penandaan) gambar
tomcattest
. Untuk membangun gambar kontainer, gambar dasar pertama kali diunduh dari Docker Hub dan aplikasi ditambahkan ke dalamnya.Setelah perintah build selesai, jalankan
docker images
perintah untuk melihat informasi tentang gambar baru:$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE tomcattest latest 86838648aab6 2 minutes ago 194 MB
Verifikasi bahwa aplikasi kontainer Anda berjalan secara lokal sebelum mendorongnya ke registri kontainer:
docker run -itd --name tomcat-site -p 8080:8080 tomcattest.
-
--name
menamai kontainer, sehingga Anda dapat merujuknya menggunakan nama yang mudah diingat daripada ID-nya. -
-p
menentukan pemetaan port antara kontainer dan OS host.
Nota
Port yang Anda buka dengan
-p
parameter harus menjadi port tempat aplikasi Tomcat Anda mendengarkan permintaan. Dalam contoh saat ini, ada Konektor yang dikonfigurasi dalam file ApacheTomcat/conf/server.xml untuk mendengarkan port 8080 untuk permintaan HTTP. Port ini dipetakan ke port 8080 pada host.Untuk mempelajari tentang parameter lain, lihat dokumentasi jalankan Docker.
-
Untuk menguji kontainer Anda, buka browser dan masukkan salah satu URL berikut. Anda akan melihat varian layar selamat datang "Halo Dunia!" untuk setiap URL.
http://localhost:8080/hello
http://localhost:8080/hello/sayhello
http://localhost:8080/hello/sayhi
Hentikan kontainer dan hapus dari komputer pengembangan Anda:
docker stop tomcat-site docker rm tomcat-site
Dorong gambar Tomcat ke registri kontainer Anda
Sekarang setelah Anda memverifikasi bahwa gambar Tomcat berjalan dalam kontainer di komputer pengembangan Anda, dorong ke repositori dalam registri kontainer untuk mengurangi gangguan pada alur kerja pengembangan dan penyebaran gambar Anda. Artikel ini menggunakan Azure Container Registry untuk menyimpan gambar, tetapi, dengan beberapa modifikasi langkah-langkah, Anda dapat menggunakan registri kontainer apa pun yang Anda pilih. Dalam artikel ini nama registri diasumsikan sebagai myregistry dan nama registri lengkapnya myregistry.azurecr.io. Ubah ini dengan tepat untuk skenario Anda.
Jalankan
docker login
untuk masuk ke registri kontainer Anda dengan kredensial registri Anda.Contoh berikut mengirimkan ID dan kata sandi dari perwakilan layanan Microsoft Entra. Misalnya, Anda mungkin telah menetapkan prinsipal layanan ke registri Anda untuk skenario otomatisasi. Atau, Anda dapat masuk menggunakan nama pengguna dan kata sandi registri Anda.
docker login myregistry.azurecr.io -u xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx -p myPassword
Perintah berikut membuat tag, atau alias, dari citra, dengan jalur lengkap ke dalam registri Anda. Contoh ini menempatkan gambar di
samples
namespace untuk menghindari kekacauan di root dari registri.docker tag tomcattest myregistry.azurecr.io/samples/tomcattest
Dorong gambar ke registri kontainer Anda:
docker push myregistry.azurecr.io/samples/tomcattest
Membangun dan menyebarkan aplikasi kontainer Service Fabric
Sekarang setelah Anda mendorong gambar Tomcat ke registri kontainer, Anda dapat membangun dan menyebarkan aplikasi kontainer Service Fabric yang menarik gambar Tomcat dari registri Anda dan menjalankannya sebagai layanan kontainer di kluster Anda.
Buat direktori baru di luar kloning lokal Anda (di luar pohon direktori service-fabric-java-getting-started ). Beralih ke jendela perintah dan gunakan Yeoman untuk membuat kerangka untuk aplikasi kontainer:
yo azuresfcontainer
Masukkan nilai berikut saat diminta:
- Beri nama aplikasi Anda: ServiceFabricTomcat
- Nama layanan aplikasi: TomcatService
- Masukkan Nama Gambar: Berikan URL untuk gambar kontainer di registri kontainer Anda; misalnya, myregistry.azurecr.io/samples/tomcattest.
- Perintah: Biarkan kosong ini. Karena gambar ini memiliki titik masuk beban kerja yang ditentukan, Anda tidak perlu secara eksplisit menentukan perintah input (perintah berjalan di dalam kontainer, yang akan menjaga kontainer tetap berjalan setelah startup).
- Jumlah instans aplikasi kontainer tamu: 1
Dalam manifes layanan (ServiceFabricTomcat/ServiceFabricTomcat/TomcatServicePkg/ServiceManifest.xml), tambahkan XML berikut di bawah tag ServiceManfest root untuk membuka port tempat aplikasi Anda mendengarkan permintaan. Tag Titik akhir mendeklarasikan protokol dan port untuk titik akhir. Untuk artikel ini, layanan kontainer mendengarkan port 8080:
<Resources>
<Endpoints>
<!-- This endpoint is used by the communication listener to obtain the port on which to
listen. Please note that if your service is partitioned, this port is shared with
replicas of different partitions that are placed in your code. -->
<Endpoint Name="endpointTest" Port="8080" Protocol="tcp"/>
</Endpoints>
</Resources>
- Dalam manifes aplikasi (ServiceFabricTomcat/ServiceFabricTomcat/ApplicationManifest.xml), di bawah tag ServiceManifestImport , tambahkan XML berikut. Ganti AccountName dan Password di tag RepositoryCredentials dengan nama registri kontainer Anda dan kata sandi yang diperlukan untuk masuk ke dalamnya.
<Policies>
<ContainerHostPolicies CodePackageRef="Code">
<PortBinding ContainerPort="8080" EndpointRef="endpointTest"/>
<RepositoryCredentials AccountName="myregistry" Password="=P==/==/=8=/=+u4lyOB=+=nWzEeRfF=" PasswordEncrypted="false"/>
</ContainerHostPolicies>
</Policies>
Tag ContainerHostPolicies menentukan kebijakan untuk mengaktifkan host kontainer.
- Tag PortBinding mengonfigurasi kebijakan pemetaan port kontainer ke port host. Atribut ContainerPort diatur ke 8080 karena kontainer mengekspos port 8080, seperti yang ditentukan dalam Dockerfile. Atribut EndpointRef diatur ke "endpointTest", titik akhir yang ditentukan dalam manifes layanan di langkah sebelumnya. Dengan demikian, permintaan masuk ke layanan pada port 8080 dipetakan ke port 8080 pada kontainer.
- Tag RepositoryCredentials menentukan kredensial yang perlu diautentikasi kontainer dengan repositori (privat) tempatnya menarik gambar. Anda tidak memerlukan kebijakan ini jika gambar akan ditarik dari repositori publik.
- Di folder ServiceFabricTomcat , sambungkan ke kluster service fabric Anda.
Untuk menyambungkan ke kluster Service Fabric lokal, jalankan:
sfctl cluster select --endpoint http://localhost:19080
Untuk menyambungkan ke kluster Azure yang aman, pastikan sertifikat klien ada sebagai file .pem di direktori ServiceFabricTomcat , dan jalankan:
sfctl cluster select --endpoint https://PublicIPorFQDN:19080 -pem your-certificate.pem -no-verify
Di perintah sebelumnya, ganti
your-certificate.pem
dengan nama file sertifikat klien Anda. Dalam lingkungan pengembangan dan pengujian, sertifikat kluster sering digunakan sebagai sertifikat klien. Jika sertifikat Anda tidak ditandatangani sendiri, hilangkan-no-verify
parameter .Sertifikat kluster biasanya diunduh secara lokal sebagai file .pfx. Jika Anda belum memiliki sertifikat dalam format PEM, Anda dapat menjalankan perintah berikut untuk membuat file .pem dari file .pfx:
openssl pkcs12 -in your-certificate.pfx -out your-certificate.pem -nodes -passin pass:your-pfx-password
Jika file .pfx Anda tidak dilindungi kata sandi, gunakan
-passin pass:
untuk parameter terakhir.
Jalankan skrip penginstalan yang disediakan dalam templat untuk menyebarkan aplikasi ke kluster Anda. Skrip menyalin paket aplikasi ke penyimpanan gambar kluster, mendaftarkan jenis aplikasi, dan membuat instans aplikasi.
./install.sh
Setelah Anda menjalankan skrip penginstalan, buka browser dan navigasikan ke Service Fabric Explorer:
- Pada kluster lokal, gunakan
http://localhost:19080/Explorer
(ganti localhost dengan IP privat VM jika menggunakan Vagrant di Mac OS X). - Pada kluster Azure yang aman, gunakan
https://PublicIPorFQDN:19080/Explorer
.
Perluas node Aplikasi dan perhatikan bahwa sekarang ada entri untuk jenis aplikasi Anda, ServiceFabricTomcatType, dan yang lain untuk instans pertama jenis tersebut. Mungkin perlu beberapa menit agar aplikasi sepenuhnya disebarkan, jadi bersabarlah.
Untuk mengakses aplikasi di server Tomcat, buka jendela browser dan masukkan salah satu URL berikut. Jika Anda menyebarkan ke kluster lokal, gunakan localhost untuk PublicIPorFQDN. Anda akan melihat varian layar selamat datang "Halo Dunia!" untuk setiap URL.
- http://PublicIPorFQDN:8080/hello
- http://PublicIPorFQDN:8080/hello/sayhello
- http://PublicIPorFQDN:8080/hello/sayhi
Pembersihan
Gunakan skrip penghapusan instalasi yang disediakan dalam templat untuk menghapus instans aplikasi dari kluster Anda dan membatalkan pendaftaran jenis aplikasi.
./uninstall.sh
Setelah Anda mendorong gambar ke registri kontainer, Anda dapat menghapus gambar lokal dari komputer pengembangan Anda:
docker rmi tomcattest
docker rmi myregistry.azurecr.io/samples/tomcattest
Langkah berikutnya
- Untuk langkah cepat tentang fitur kontainer Linux tambahan, baca Membuat aplikasi kontainer Service Fabric pertama Anda di Linux.
- Untuk langkah-langkah lebih rinci tentang kontainer Linux, baca tutorial Membuat aplikasi kontainer Linux .
- Pelajari selengkapnya tentang menjalankan kontainer di Service Fabric.