Mengkonfigurasi file DockerRun.aws.json v2 - AWS Elastic Beanstalk

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

Mengkonfigurasi file DockerRun.aws.json v2

Dockerrun.aws.json v2adalah file konfigurasi Elastic Beanstalk yang menjelaskan cara menerapkan satu set wadah Docker yang dihosting di ECS cluster di lingkungan Elastic Beanstalk. Platform Elastic Beanstalk ECS menciptakan definisi tugas, yang mencakup definisi wadah. ECS Definisi ini dijelaskan dalam file Dockerrun.aws.json konfigurasi.

Definisi kontainer dalam Dockerrun.aws.json file menjelaskan kontainer yang akan diterapkan ke setiap EC2 instans Amazon di ECS cluster. Dalam hal ini EC2 instance Amazon juga disebut sebagai instance container host, karena instance ini meng-host container Docker. File konfigurasi juga menjelaskan volume data yang akan dibuat pada instance wadah host agar kontainer Docker dipasang. Untuk informasi lebih lanjut dan diagram komponen dalam lingkungan Docker ECS terkelola di Elastic Beanstalk, ECSikhtisar platform Docker terkelola lihat sebelumnya di bagian ini.

File Dockerrun.aws.json dapat digunakan sendiri atau di-zip dengan kode sumber tambahan dalam satu arsip. Kode sumber yang diarsipkan dengan a Dockerrun.aws.json diterapkan ke instance EC2 penampung Amazon dan dapat diakses di direktori. /var/app/current/

Dockerrun.aws.json v2

Dockerrun.aws.jsonFile ini mencakup bagian-bagian berikut:

AWSEBDockerrunVersion

Menentukan nomor versi sebagai nilai 2 untuk lingkungan Docker ECS terkelola.

volume

Membuat volume dari folder di instans EC2 penampung Amazon, atau dari bundel sumber Anda (digunakan ke/var/app/current). Pasang volume ini ke jalur dalam wadah Docker Anda menggunakan mountPoints di containerDefinitions bagian.

containerDefinitions

Array definisi kontainer.

otentikasi (opsional)

Lokasi di Amazon S3 dari .dockercfg file yang berisi data otentikasi untuk repositori pribadi.

Bagian containerDefinitionsdan volume Dockerrun.aws.json menggunakan pemformatan yang sama dengan bagian yang sesuai dari file definisi ECS tugas Amazon. Untuk informasi selengkapnya tentang format definisi tugas dan daftar lengkap parameter definisi tugas, lihat definisi ECS tugas Amazon di Panduan Pengembang Layanan Kontainer Elastis Amazon.

Format volume

Parameter volume membuat volume dari salah satu folder dalam instance EC2 penampung Amazon, atau dari bundel sumber Anda (digunakan ke/var/app/current).

Volume ditentukan dalam format berikut:

"volumes": [ { "name": "volumename", "host": { "sourcePath": "/path/on/host/instance" } } ],

Pasang volume ini ke jalur dalam kontainer Docker Anda menggunakan mountPoints definisi kontainer.

Elastic Beanstalk mengkonfigurasi volume tambahan untuk log, satu untuk setiap kontainer. Ini harus dipasang oleh kontainer Docker Anda untuk menulis log ke contoh host.

Untuk detail selengkapnya, lihat mountPoints bidang di bagian Format definisi kontainer berikut.

Format definisi kontainer

Contoh berikut menunjukkan subset parameter yang biasa digunakan di containerDefinitionsbagian ini. Parameter opsional juga tersedia.

Platform Beanstalk membuat definisi ECS tugas, yang mencakup definisi wadah. ECS Beanstalk mendukung sub-set parameter untuk definisi wadah. ECS Untuk informasi selengkapnya, lihat Definisi kontainer di Panduan Pengembang Layanan Kontainer Elastis Amazon.

File Dockerrun.aws.json berisi satu baris atau object yang lain dari definisi kontainer dengan bidang berikut:

nama

Nama kontainer. Lihat Parameter Definisi Kontainer Standar untuk informasi tentang panjang maksimum dan karakter yang diizinkan.

gambar

Nama gambar Docker dalam repositori Docker online tempat Anda membuat container Docker. Perhatikan konvensi ini:

  • Gambar di repositori resmi di Docker Hub menggunakan satu nama (misalnya, ubuntu atau mongo).

  • 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).

Lingkungan

Sebuah susunan variabel lingkungan untuk melewati container

Sebagai contoh, entri berikut mendefinisikan variabel lingkungan dengan nama Container dan nilai PHP:

"environment": [ { "name": "Container", "value": "PHP" } ],
penting

Benar jika tugas harus berhenti jika kontainer gagal. Kontainer yang tidak penting dapat selesai atau mogok tanpa memengaruhi container lainnya pada contoh.

memori

Jumlah memori pada contoh kontainer untuk cadangan untuk kontainer. Tentukan bilangan bulat bukan nol untuk salah satu atau kedua parameter memory atau memoryReservation dalam definisi kontainer.

memoryReservation

Batas lunak (di MiB) memori untuk cadangan untuk kontainer. Tentukan bilangan bulat bukan nol untuk salah satu atau kedua parameter memory atau memoryReservation dalam definisi kontainer.

mountPoints

Volume dari instance EC2 penampung Amazon untuk dipasang, dan lokasi pada sistem file kontainer Docker untuk memasangnya. Saat Anda memasang volume yang berisi konten aplikasi, kontainer Anda dapat membaca data yang Anda unggah di bundel sumber Anda. Ketika Anda memasang log volume untuk menulis log data, Elastic Beanstalk dapat mengumpulkan data log dari volume ini.

Elastic Beanstalk membuat volume log pada contoh kontainer, satu untuk setiap kontainer Docker, di /var/log/containers/containername. Volume ini diberi nama awseb-logs-containername dan harus dipasang ke lokasi dalam struktur file kontainer di mana log ditulis.

Misalnya, titik pemasangan berikut memetakan lokasi log nginx dalam kontainer ke volume yang dihasilkan Elastic Beanstalk untuk kontainer nginx-proxy.

{ "sourceVolume": "awseb-logs-nginx-proxy", "containerPath": "/var/log/nginx" }
portMappings

Port jaringan peta pada kontainer untuk port pada host.

Tautan

Daftar kontainer untuk ditautkan. kontainer yang ditautkan dapat saling menemukan dan berkomunikasi dengan aman.

volumesFrom

Pasang semua volume dari kontainer yang berbeda. Misalnya, untuk memasang volume dari kontainer bernama web:

"volumesFrom": [ { "sourceContainer": "web" } ],

Format otentikasi — menggunakan gambar dari repositori pribadi

authenticationBagian ini berisi data otentikasi untuk repositori pribadi. Entri ini opsional.

menambahkan informasi tentang bucket Amazon S3 yang berisi berkas otentikasi di parameter authentication dari file Dockerrun.aws.json. Pastikan bahwa parameter authentication berisi bucket Amazon S3 yang valid dan kunci. bucket Amazon S3 harus di-hosting di wilayah yang sama dengan lingkungan yang menggunakannya. Elastic Beanstalk tidak akan mengunduh file dari Amazon S3 bucket yang dihosting di wilayah lain.

Menggunakan format berikut:

"authentication": { "bucket": "amzn-s3-demo-bucket", "key": "mydockercfg" },

Untuk informasi tentang menghasilkan dan mengunggah file otentikasi, lihat Menggunakan gambar dari repositori pribadi di Elastic Beanstalk.

Contoh DockerRun.aws.json v2

Potongan berikut adalah contoh yang menggambarkan sintaks file Dockerrun.aws.json untuk sebuah contoh dengan dua kontainer.

{ "AWSEBDockerrunVersion": 2, "volumes": [ { "name": "php-app", "host": { "sourcePath": "/var/app/current/php-app" } }, { "name": "nginx-proxy-conf", "host": { "sourcePath": "/var/app/current/proxy/conf.d" } } ], "containerDefinitions": [ { "name": "php-app", "image": "php:fpm", "environment": [ { "name": "Container", "value": "PHP" } ], "essential": true, "memory": 128, "mountPoints": [ { "sourceVolume": "php-app", "containerPath": "/var/www/html", "readOnly": true } ] }, { "name": "nginx-proxy", "image": "nginx", "essential": true, "memory": 128, "portMappings": [ { "hostPort": 80, "containerPort": 80 } ], "links": [ "php-app" ], "mountPoints": [ { "sourceVolume": "php-app", "containerPath": "/var/www/html", "readOnly": true }, { "sourceVolume": "nginx-proxy-conf", "containerPath": "/etc/nginx/conf.d", "readOnly": true }, { "sourceVolume": "awseb-logs-nginx-proxy", "containerPath": "/var/log/nginx" } ] } ] }