Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Mengkonfigurasi lingkungan Elastic Beanstalk Docker
Bab ini menjelaskan informasi konfigurasi tambahan untuk semua cabang platform Docker yang didukung, termasuk cabang platform Docker yang ECS dikelola. Kecuali cabang platform tertentu atau komponen cabang platform diidentifikasi dalam suatu bagian, itu berlaku untuk semua lingkungan yang menjalankan platform Docker dan Docker ECS yang didukung.
catatan
Jika lingkungan Elastic Beanstalk Anda menggunakan versi platform AMI Amazon Linux Docker (sebelum Amazon Linux 2), pastikan untuk membaca informasi tambahan di. Konfigurasi Docker di Amazon Linux AMI (sebelumnya Amazon Linux 2)
Bagian-bagian
- Mengkonfigurasi perangkat lunak di lingkungan Docker
- Referensi variabel lingkungan dalam kontainer
- Menggunakan fitur interpolasi untuk variabel lingkungan dengan Docker Compose
- Membuat log untuk pelaporan kesehatan yang ditingkatkan dengan Docker Compose
- Pencatatan khusus wadah Docker dengan Docker Compose
- Gambar Docker
- Mengkonfigurasi pembaruan terkelola untuk lingkungan Docker
- Ruang nama konfigurasi Docker
- 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
Buka konsol Elastic Beanstalk, dan di daftar Wilayah, pilih konsol Elastic
Beanstalk. Wilayah AWS -
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.
Di panel navigasi, pilih Konfigurasi.
-
Dalam kategori konfigurasi Pembaruan, pemantauan, dan pencatatan, pilih Edit.
-
Membuat perubahan konfigurasi yang diperlukan.
-
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 NGINX proxy 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 default ke None untuk pengaturan server Proxy, dan Elastic Beanstalk tidak menyediakan konfigurasi. NGINX
catatan
Bahkan jika Anda memilih NGINXsebagai server proxy, pengaturan ini diabaikan di lingkungan dengan Docker Compose. Pengaturan Server proksi masih default pada Tidak ada.
Karena proxy server NGINX web dinonaktifkan untuk platform Docker di Amazon Linux 2 dengan Docker Compose, Anda harus mengikuti petunjuk untuk membuat log untuk pelaporan kesehatan 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 setelan konfigurasi lingkungan pada instans Amazon Elastic Compute Cloud (AmazonEC2) 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 konfigurasienv_file
di filedocker-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
danLOG_LEVEL=error
, Elastic Beanstalk menghasilkan file.env
berikut untuk Anda:DEBUG_LEVEL=1 LOG_LEVEL=error
-
Dalam file
docker-compose.yml
, opsi konfigurasienv_file
menunjuk ke file.env
, dan itu juga mendefinisikan variabel lingkunganDEBUG=1
secara langsung di filedocker-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
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 NGINX web dinonaktifkan untuk lingkungan Docker yang 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
Untuk memecahkan masalah secara efisien dan memantau layanan kontainer Anda, Anda dapat meminta log instans 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/
. 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.<service
name>
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
-
Mengedit file
docker-compose.yml
. -
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-proxy
adalah<service name>
-
/var/log/nginx
adalah<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 nilainya.
/var/log/eb-docker/containers
-
Elastic Beanstalk secara otomatis menciptakan direktori
/var/log/eb-docker/containers/
untuk setiap layanan di file<service name>
docker-compose.yml
.
Gambar Docker
Cabang platform Docker dan Docker ECS terkelola 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,
ubuntu
ataumongo
). -
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/ubuntu
atau
).account-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 ECS terkelola 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, file konfigurasi berikut memungkinkan pembaruan platform terkelola pada pukul 9:00 pagi UTC setiap hari Selasa untuk pembaruan versi minor dan patch, sehingga memungkinkan 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 AMI Linux (sebelum 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 konfigurasi format yang ~/.dockercfg
lebih 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 config.json
file, hapus auths
kunci luar, tambahkan email
kunci, dan ratakan JSON dokumen agar sesuai 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 LinuxAMI, Elastic Beanstalk mengonfigurasi EBS dua volume penyimpanan Amazon 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 gambar Docker, Anda dapat menyesuaikan volume penyimpanan gambar dengan menggunakan opsi BlockDeviceMapping
konfigurasi di ruang nama aws:autoscaling:launchconfiguration.
Misalnya, file konfigurasi berikut meningkatkan ukuran volume penyimpanan menjadi 100 GB dengan 500 yang disediakanIOPS:
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.