Pilih preferensi cookie Anda

Kami menggunakan cookie penting serta alat serupa yang diperlukan untuk menyediakan situs dan layanan. Kami menggunakan cookie performa untuk mengumpulkan statistik anonim sehingga kami dapat memahami cara pelanggan menggunakan situs dan melakukan perbaikan. Cookie penting tidak dapat dinonaktifkan, tetapi Anda dapat mengklik “Kustom” atau “Tolak” untuk menolak cookie performa.

Jika Anda setuju, AWS dan pihak ketiga yang disetujui juga akan menggunakan cookie untuk menyediakan fitur situs yang berguna, mengingat preferensi Anda, dan menampilkan konten yang relevan, termasuk iklan yang relevan. Untuk menerima atau menolak semua cookie yang tidak penting, klik “Terima” atau “Tolak”. Untuk membuat pilihan yang lebih detail, klik “Kustomisasi”.

Mengkonfigurasi lingkungan Elastic Beanstalk Docker

Mode fokus
Mengkonfigurasi lingkungan Elastic Beanstalk Docker - AWS Elastic Beanstalk

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Bab ini menjelaskan informasi konfigurasi tambahan untuk semua cabang platform Docker yang didukung, termasuk cabang platform Docker yang dikelola ECS. Kecuali cabang platform tertentu atau komponen cabang platform diidentifikasi dalam suatu bagian, itu berlaku untuk semua lingkungan yang menjalankan platform Docker dan ECS yang didukung Docker yang didukung.

catatan

Jika lingkungan Node.js Elastic Beanstalk Anda menggunakan versi platform Amazon Linux AMI (Amazon Linux 2 yang terdahulu), baca informasi di Konfigurasi docker di Amazon Linux AMI (sebelumnya Amazon Linux 2).

Mengkonfigurasi perangkat lunak di lingkungan Docker

Anda dapat menggunakan konsol Elastic Beanstalk untuk mengkonfigurasi perangkat lunak yang berjalan pada contoh lingkungan Anda.

Untuk mengonfigurasi lingkungan Docker Anda di konsol Elastic Beanstalk
  1. Buka konsol Elastic Beanstalk, dan di daftar Wilayah, pilih konsol Elastic Beanstalk. Wilayah AWS

  2. Di panel navigasi, pilih Lingkungan, dan kemudian pilih nama lingkungan Anda dari daftar.

    catatan

    Jika Anda memiliki banyak lingkungan, gunakan bilah pencarian untuk memfilter daftar lingkungan.

  3. Di panel navigasi, pilih Konfigurasi.

  4. Dalam kategori konfigurasi Pembaruan, pemantauan, dan pencatatan, pilih Edit.

  5. Membuat perubahan konfigurasi yang diperlukan.

  6. Untuk menyimpan perubahan pilih Terapkan di bagian bawah halaman.

Untuk informasi tentang mengkonfigurasi pengaturan perangkat lunak di lingkungan apa pun, lihatProperti lingkungan dan pengaturan perangkat lunak lainnya. Bagian berikut mencakup informasi spesifik Docker.

Opsi kontainer

Opsi kontainerbagian memiliki pilihan platform-spesifik. Untuk lingkungan Docker, ini memungkinkan Anda memilih apakah lingkungan Anda menyertakan server proxy NGINX atau tidak.

Lingkungan dengan Docker Compose

Jika Anda mengelola lingkungan Docker dengan Docker Compose, Elastic Beanstalk mengasumsikan bahwa Anda menjalankan server proxy sebagai kontainer. Oleh karena itu defaultnya adalahTidak adauntukServer proksipengaturan, dan Elastic Beanstalk tidak menyediakan konfigurasi NGINX.

catatan

Bahkan jika Anda memilihNGINXsebagai server proxy, pengaturan ini diabaikan dalam lingkungan dengan Docker Compose. Pengaturan Server proksi masih default pada Tidak ada.

Karena proxy server web NGINX dinonaktifkan untuk platform Docker di Amazon Linux 2 dengan Docker Compose, Anda harus mengikuti petunjuk untuk menghasilkan log untuk pelaporan kondisi yang ditingkatkan. Untuk informasi selengkapnya, lihat Membuat log untuk pelaporan kesehatan yang ditingkatkan dengan Docker Compose.

Properti lingkungan dan Variabel Lingkungan

Bagian properti Lingkungan memungkinkan Anda menentukan pengaturan konfigurasi lingkungan pada instance Amazon Elastic Compute Cloud (Amazon EC2) yang menjalankan aplikasi Anda. properti lingkungan diberikan sebagai pasangan nilai kunci untuk aplikasi. Dalam lingkungan Docker, Elastic Beanstalk memberikan properti lingkungan untuk kontainer sebagai variabel lingkungan.

Kode aplikasi Anda yang berjalan dalam kontainer dapat merujuk ke variabel lingkungan dengan nama dan membaca nilainya. Kode sumber yang membaca variabel lingkungan ini akan bervariasi menurut bahasa pemrograman. Anda dapat menemukan instruksi untuk membaca nilai variabel lingkungan dalam bahasa pemrograman yang didukung platform terkelola Elastic Beanstalk di topik platform masing-masing. Untuk daftar tautan ke topik ini, lihatProperti lingkungan dan pengaturan perangkat lunak lainnya.

Lingkungan dengan Docker Compose

Jika Anda mengelola lingkungan Docker Anda dengan Docker Compose, Anda harus membuat beberapa konfigurasi tambahan untuk mengambil variabel lingkungan dalam kontainer. Agar executable yang berjalan di container Anda untuk mengakses variabel lingkungan ini, Anda harus mereferensikannya di file. docker-compose.yml Untuk informasi selengkapnya, lihat Referensi variabel lingkungan dalam kontainer.

Referensi variabel lingkungan dalam kontainer

Jika Anda menggunakan alat Docker Compose pada platform Docker Amazon Linux 2, Elastic Beanstalk menghasilkan file lingkungan Docker Compose bernama .env di direktori root proyek aplikasi Anda. File ini menyimpan variabel lingkungan Anda dikonfigurasi untuk Elastic Beanstalk.

catatan

Jika Anda menyertakan file .env dalam bundel aplikasi Anda, Elastic Beanstalk tidak akan menghasilkan file .env.

Agar kontainer untuk referensi variabel lingkungan yang Anda tentukan di Elastic Beanstalk, Anda harus mengikuti salah satu atau kedua pendekatan konfigurasi ini.

  • Tambahkan file .env yang dihasilkan oleh Elastic Beanstalk ke opsi konfigurasi env_file di file docker-compose.yml.

  • Langsung menentukan variabel lingkungan di file docker-compose.yml.

Berikut ini adalah contoh file . Sampel file docker-compose.yml menunjukkan kedua pendekatan.

  • Jika anda menentukan properti lingkungan DEBUG_LEVEL=1 dan LOG_LEVEL=error, Elastic Beanstalk menghasilkan file .env berikut untuk Anda:

    DEBUG_LEVEL=1 LOG_LEVEL=error
  • Dalam file docker-compose.yml, opsi konfigurasi env_file menunjuk ke file .env, dan itu juga mendefinisikan variabel lingkungan DEBUG=1 secara langsung di file docker-compose.yml.

    services: web: build: . environment: - DEBUG=1 env_file: - .env
Catatan
  • Jika Anda menetapkan variabel lingkungan yang sama di kedua file, variabel didefinisikan dalam file docker-compose.yml memiliki keutamaan lebih tinggi dari variabel yang didefinisikan dalam file .env.

  • Hati-hati untuk tidak meninggalkan spasi antara tanda sama (=) dan nilai yang diberikan ke variabel Anda untuk mencegah spasi ditambahkan ke string.

Untuk mempelajari lebih lanjut tentang variabel lingkungan di Docker Compose, lihatVariabel lingkungan dalam Compose

Menggunakan fitur interpolasi untuk variabel lingkungan dengan Docker Compose

Dimulai dengan rilis platform 28 Juli 2023, cabang platform Docker Amazon Linux 2 menawarkan fitur interpolasi Docker Compose. Dengan fitur ini, nilai dalam file Compose dapat disetel oleh variabel dan diinterpolasi saat runtime. Untuk informasi selengkapnya tentang fitur ini, lihat Interpolasi di situs web dokumentasi Docker.

penting

Jika Anda ingin menggunakan fitur ini dengan aplikasi Anda, ketahuilah bahwa Anda harus menerapkan pendekatan yang menggunakan kait platform.

Ini diperlukan karena mitigasi yang kami terapkan di mesin platform. Mitigasi ini memastikan kompatibilitas mundur untuk pelanggan yang tidak mengetahui fitur interpolasi baru dan memiliki aplikasi yang ada yang menggunakan variabel lingkungan dengan karakter tersebut. $ Mesin platform yang diperbarui lolos dari interpolasi secara default dengan mengganti karakter dengan $ karakter. $$

Berikut ini adalah contoh skrip hook platform yang dapat Anda atur untuk memungkinkan penggunaan fitur interpolasi.

#!/bin/bash : ' example data format in .env file key1=value1 key2=value2 ' envfile="/var/app/staging/.env" tempfile=$(mktemp) while IFS= read -r line; do # split each env var string at '=' split_str=(${line//=/ }) if [ ${#split_str[@]} -eq 2 ]; then # replace '$$' with '$' replaced_str=${split_str[1]//\$\$/\$} # update the value of env var using ${replaced_str} line="${split_str[0]}=${replaced_str}" fi # append the updated env var to the tempfile echo "${line}""${tempfile}" done < "${envfile}" # replace the original .env file with the tempfile mv "${tempfile}" "${envfile}"

Tempatkan kait platform di bawah kedua direktori ini:

  • .platform/confighooks/predeploy/

  • .platform/hooks/predeploy/

Untuk informasi selengkapnya, lihat Hook platform di topik Memperluas platform Linux dari panduan ini.

Membuat log untuk pelaporan kesehatan yang ditingkatkan dengan Docker Compose

Agen health Elastic Beanstalk menyediakan sistem operasi dan metrik kesehatan aplikasi untuk lingkungan Elastic Beanstalk. Hal ini bergantung pada web server format log yang relay informasi dalam format tertentu.

Elastic Beanstalk mengasumsikan bahwa Anda menjalankan proxy server web sebagai kontainer. Akibatnya, proxy server web NGINX dinonaktifkan untuk lingkungan Docker menjalankan Docker Compose. Anda harus mengkonfigurasi server Anda untuk menulis log di lokasi dan format yang menggunakan agen kesehatan Elastic Beanstalk. Dengan demikian, Anda dapat memanfaatkan sepenuhnya pelaporan kesehatan yang disempurnakan, meskipun proxy server web dinonaktifkan.

Untuk petunjuk tentang cara melakukannya, lihat Konfigurasi log server web

Pencatatan khusus wadah Docker dengan Docker Compose

Agar dapat memecahkan masalah dan memantau layanan kontainer secara efisien, Anda dapat meminta instans log dari Elastic Beanstalk melalui konsol manajemen lingkungan atau EB CLI. Log instans terdiri dari log bundel dan log ekor, digabungkan dan dikemas untuk memungkinkan Anda melihat log dan peristiwa terbaru dengan cara yang efisien dan mudah.

Elastic Beanstalk menciptakan direktori log pada contoh kontainer, satu untuk setiap layanan didefinisikan dalam file docker-compose.yml, di /var/log/eb-docker/containers/<service name>. Jika Anda menggunakan fitur Docker Compose pada platform Docker Amazon Linux 2, Anda dapat memasang direktori ini ke lokasi dalam struktur file penampung tempat log ditulis. Ketika Anda memasang direktori log untuk menulis data log, Elastic Beanstalk dapat mengumpulkan data log dari direktori ini.

Jika aplikasi Anda berada di platform Docker yang tidak menggunakan Docker Compose, Anda dapat mengikuti prosedur standar yang dijelaskan di Pencatatan khusus wadah Docker dengan Docker Compose.

Untuk mengonfigurasi file log layanan Anda menjadi file ekor dan log bundel yang dapat diambil
  1. Mengedit file docker-compose.yml.

  2. Di bawah kunci volumes untuk layanan Anda, tambahkan bind mount menjadi seperti ini:

    "${EB_LOG_BASE_DIR}/<service name>:<log directory inside container>

    Dalam sampel file docker-compose.yml di bawah ini:

    • nginx-proxyadalah <service name>

    • /var/log/nginxadalah <log directory inside container>

    services: nginx-proxy: image: "nginx" volumes: - "${EB_LOG_BASE_DIR}/nginx-proxy:/var/log/nginx"

  • Direktori var/log/nginx berisi log untuk layanan proksi-nginx dalam kontainer, dan akan dipetakan ke direktori /var/log/eb-docker/containers/nginx-proxy pada host.

  • Semua log di direktori ini sekarang dapat diambil sebagai log bundel dan log ekor melalui Elastic Beanstalk'sPermintaan log instancefungsional.

Catatan
  • $ {EB_LOG_BASE_DIR}adalah variabel lingkungan yang ditetapkan oleh Elastic Beanstalk dengan nilai/var/log/eb-docker/containers.

  • Elastic Beanstalk secara otomatis menciptakan direktori /var/log/eb-docker/containers/<service name> untuk setiap layanan di file docker-compose.yml.

Gambar Docker

Cabang platform Docker yang dikelola Docker dan ECS untuk Elastic Beanstalk mendukung penggunaan gambar Docker yang disimpan dalam repositori gambar online publik atau pribadi.

Menentukan gambar berdasarkan nama di Dockerrun.aws.json. Perhatikan konvensi ini:

  • Gambar di repositori resmi di Docker Hub menggunakan satu nama (misalnya,ubuntuataumongo).

  • Gambar di repositori lain di Docker Hub memenuhi syarat dengan nama organisasi (misalnya,amazon/amazon-ecs-agent).

  • Gambar di repositori online lainnya memenuhi syarat lebih lanjut dengan nama domain (misalnya,quay.io/assemblyline/ubuntuatauaccount-id.dkr.ecr.us-east-2.amazonaws.com/ubuntu:trusty).

Untuk lingkungan yang menggunakan platform Docker saja, Anda juga dapat membuat gambar Anda sendiri selama pembuatan lingkungan dengan Dockerfile. Lihat Membangun gambar kustom dengan Dockerfile. Untuk rincian selengkapnya, Platform Docker yang dikelola ECS tidak mendukung fungsi ini.

Mengkonfigurasi pembaruan terkelola untuk lingkungan Docker

DenganPembaruan platform terkelola, Anda dapat mengkonfigurasi lingkungan Anda untuk secara otomatis memperbarui ke versi terbaru dari platform pada jadwal.

Dalam kasus lingkungan Docker, Anda mungkin ingin memutuskan apakah pembaruan platform otomatis harus terjadi di seluruh versi Docker — ketika versi platform baru menyertakan versi Docker baru. Elastic Beanstalk mendukung pembaruan platform terkelola di seluruh versi Docker saat memperbarui dari lingkungan yang menjalankan versi platform Docker yang lebih baru dari 2.9.0. Saat versi platform baru menyertakan versi baru Docker, Elastic Beanstalk menambah nomor versi pembaruan minor. Oleh karena itu, untuk mengizinkan pembaruan platform terkelola di seluruh versi Docker, aktifkan pembaruan platform terkelola untuk pembaruan versi minor dan patch. Untuk mencegah pembaruan platform terkelola di seluruh versi Docker, aktifkan pembaruan platform terkelola untuk menerapkan pembaruan versi patch saja.

Misalnya, hal berikut file konfigurasi memungkinkan pembaruan platform terkelola pada 9:00 AM UTC setiap hari Selasa untuk pembaruan versi minor dan patch, sehingga memungkinkan untuk pembaruan terkelola di seluruh versi Docker:

contoh .ebextensions/ .config managed-platform-update
option_settings: aws:elasticbeanstalk:managedactions: ManagedActionsEnabled: true PreferredStartTime: "Tue:09:00" aws:elasticbeanstalk:managedactions:platformupdate: UpdateLevel: minor

Untuk lingkungan yang menjalankan Docker platform versi 2.9.0 atau sebelumnya, Elastic Beanstalk tidak pernah melakukan pembaruan platform terkelola jika versi platform baru mencakup versi Docker baru.

Ruang nama konfigurasi Docker

Anda dapat menggunakan file konfigurasi untuk mengatur pilihan konfigurasi dan melakukan tugas-tugas konfigurasi contoh lain selama penyebaran. Opsi konfigurasi dapat berupa platform khusus atau berlaku untuk semua platform di layanan Elastic Beanstalk secara keseluruhan. Opsi konfigurasi diatur ke dalam ruang nama.

catatan

Informasi ini hanya berlaku untuk lingkungan Docker yang tidak menjalankan Docker Compose. Opsi ini memiliki perilaku yang berbeda dengan lingkungan Docker yang menjalankan Docker Compose. Untuk informasi lebih lanjut tentang layanan proxy dengan Docker Compose lihat Opsi kontainer.

Platform Docker mendukung opsi di ruang nama berikut, selain opsi yang didukung untuk semua lingkungan Elastic Beanstalk:

  • aws:elasticbeanstalk:environment:proxy— Pilih server proxy untuk lingkungan Anda. Docker mendukung baik menjalankan Nginx atau tidak ada server proxy.

File konfigurasi contoh berikut mengkonfigurasi lingkungan Docker untuk menjalankan tidak ada server proxy.

contoh .ebextensions/docker-settings.config
option_settings: aws:elasticbeanstalk:environment:proxy: ProxyServer: none

Konfigurasi docker di Amazon Linux AMI (sebelumnya Amazon Linux 2)

Jika lingkungan Elastic Beanstalk Docker Anda menggunakan versi platform Amazon Linux AMI (sebelumnya Amazon Linux 2), baca informasi tambahan di bagian ini.

Informasi ini relevan bagi Anda jika Anda menggunakan gambar dari repositori pribadi. Dimulai dengan Docker versi 1.7, perintah docker login mengubah nama file autentikasi, dan format file. Versi platform Amazon Linux AMI Docker (sebelumnya Amazon Linux 2) memerlukan file konfiigurasi dengan format ~/.dockercfg lama.

Dengan Docker versi 1.7 dan setelahnya, perintah docker login untuk membuat file otentikasi di ~/.docker/config.json dengan format berikut.

{ "auths":{ "server":{ "auth":"key" } } }

Dengan Docker versi 1.6.2 dan sebelumnya, perintah docker login untuk membuat file autentikasi di ~/.dockercfg dalam format berikut.

{ "server" : { "auth" : "auth_token", "email" : "email" } }

Untuk mengonversi file config.json, hapus bagian luar kunci auths, tambahkan kunci email, dan ratakan dokumen JSON untuk mencocokkan dengan format lama.

Pada versi platform Amazon Linux 2 Docker, Elastic Beanstalk menggunakan nama dan format file otentikasi yang lebih baru. Jika Anda menggunakan versi platform Amazon Linux 2 Docker, Anda dapat menggunakan file otentikasi yang dibuat perintah docker login tanpa konversi apapun.

Informasi ini relevan bagi Anda jika Anda menggunakan gambar dari repositori pribadi. Dimulai dengan Docker versi 1.7, perintah docker login mengubah nama file autentikasi, dan format file. Versi platform Amazon Linux AMI Docker (sebelumnya Amazon Linux 2) memerlukan file konfiigurasi dengan format ~/.dockercfg lama.

Dengan Docker versi 1.7 dan setelahnya, perintah docker login untuk membuat file otentikasi di ~/.docker/config.json dengan format berikut.

{ "auths":{ "server":{ "auth":"key" } } }

Dengan Docker versi 1.6.2 dan sebelumnya, perintah docker login untuk membuat file autentikasi di ~/.dockercfg dalam format berikut.

{ "server" : { "auth" : "auth_token", "email" : "email" } }

Untuk mengonversi file config.json, hapus bagian luar kunci auths, tambahkan kunci email, dan ratakan dokumen JSON untuk mencocokkan dengan format lama.

Pada versi platform Amazon Linux 2 Docker, Elastic Beanstalk menggunakan nama dan format file otentikasi yang lebih baru. Jika Anda menggunakan versi platform Amazon Linux 2 Docker, Anda dapat menggunakan file otentikasi yang dibuat perintah docker login tanpa konversi apapun.

Untuk meningkatkan kinerja di Amazon Linux AMI, Elastic Beanstalk mengonfigurasi dua volume penyimpanan Amazon EBS untuk instans Amazon lingkungan Docker Anda. EC2 Selain volume akar yang disiapkan untuk semua lingkungan Elastic Beanstalk, volume 12GB kedua bernama xvdcz disiapkan untuk penyimpanan gambar pada lingkungan Docker.

Jika Anda membutuhkan lebih banyak ruang penyimpanan atau peningkatan IOPS untuk Docker gambar, Anda dapat menyesuaikan volume penyimpanan gambar dengan menggunakan pilihan konfigurasi BlockDeviceMapping di namespace aws:autoscaling:launchconfiguration.

Misalnya, file konfigurasi berikut meningkatkan volume penyimpanan ukuran 100 GB dengan 500 provisioned IOPS:

contoh .ebextensions/blockdevice-xvdcz.config
option_settings: aws:autoscaling:launchconfiguration: BlockDeviceMappings: /dev/xvdcz=:100::io1:500

Jika Anda menggunakan pilihan BlockDeviceMappings untuk mengkonfigurasi volume tambahan untuk aplikasi Anda, Anda harus menyertakan pemetaan untuk xvdcz guna memastikan bahwa aplikasi itu dibuat. Contoh berikut mengkonfigurasi dua volume, volume penyimpanan gambar xvdcz dengan pengaturan default dan volume aplikasi 24 GB tambahan bernama sdh:

contoh .ebextensions/blockdevice-sdh.config
option_settings: aws:autoscaling:launchconfiguration: BlockDeviceMappings: /dev/xvdcz=:12:true:gp2,/dev/sdh=:24
catatan

Ketika Anda mengubah pengaturan dalam namespace ini, Elastic Beanstalk menggantikan semua contoh di lingkungan Anda dengan contoh menjalankan konfigurasi baru. Lihat Perubahan konfigurasi untuk rincian selengkapnya.

Untuk meningkatkan kinerja di Amazon Linux AMI, Elastic Beanstalk mengonfigurasi dua volume penyimpanan Amazon EBS untuk instans Amazon lingkungan Docker Anda. EC2 Selain volume akar yang disiapkan untuk semua lingkungan Elastic Beanstalk, volume 12GB kedua bernama xvdcz disiapkan untuk penyimpanan gambar pada lingkungan Docker.

Jika Anda membutuhkan lebih banyak ruang penyimpanan atau peningkatan IOPS untuk Docker gambar, Anda dapat menyesuaikan volume penyimpanan gambar dengan menggunakan pilihan konfigurasi BlockDeviceMapping di namespace aws:autoscaling:launchconfiguration.

Misalnya, file konfigurasi berikut meningkatkan volume penyimpanan ukuran 100 GB dengan 500 provisioned IOPS:

contoh .ebextensions/blockdevice-xvdcz.config
option_settings: aws:autoscaling:launchconfiguration: BlockDeviceMappings: /dev/xvdcz=:100::io1:500

Jika Anda menggunakan pilihan BlockDeviceMappings untuk mengkonfigurasi volume tambahan untuk aplikasi Anda, Anda harus menyertakan pemetaan untuk xvdcz guna memastikan bahwa aplikasi itu dibuat. Contoh berikut mengkonfigurasi dua volume, volume penyimpanan gambar xvdcz dengan pengaturan default dan volume aplikasi 24 GB tambahan bernama sdh:

contoh .ebextensions/blockdevice-sdh.config
option_settings: aws:autoscaling:launchconfiguration: BlockDeviceMappings: /dev/xvdcz=:12:true:gp2,/dev/sdh=:24
catatan

Ketika Anda mengubah pengaturan dalam namespace ini, Elastic Beanstalk menggantikan semua contoh di lingkungan Anda dengan contoh menjalankan konfigurasi baru. Lihat Perubahan konfigurasi untuk rincian selengkapnya.

PrivasiSyarat situsPreferensi cookie
© 2025, Amazon Web Services, Inc. atau afiliasinya. Semua hak dilindungi undang-undang.