Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Bagian ini menjelaskan cara menyiapkan image Docker Anda untuk penerapan ke Elastic Beanstalk dengan salah satu cabang platform Docker running atau 023. AL2 AL2 File konfigurasi yang Anda perlukan bergantung pada apakah gambar Anda lokal, jarak jauh, dan apakah Anda menggunakan Docker Compose.
catatan
Untuk contoh prosedur yang meluncurkan lingkungan Docker, lihat topiknya. QuickStart untuk Docker
Topik
Mengelola gambar Anda dengan Docker Compose di Elastic Beanstalk
Anda dapat memilih untuk menggunakan Docker Compose untuk mengelola berbagai layanan dalam satu YAML file. Untuk mempelajari lebih lanjut tentang Docker Compose, lihat Mengapa menggunakan
-
Buat a
docker-compose.yml
. File ini diperlukan jika Anda menggunakan Docker Compose untuk mengelola aplikasi Anda dengan Elastic Beanstalk. Jika semua penerapan Anda bersumber dari gambar di repositori publik, maka tidak ada file konfigurasi lain yang diperlukan. Jika gambar sumber penyebaran Anda berada di repositori pribadi, Anda harus melakukan beberapa konfigurasi tambahan. Untuk informasi selengkapnya, lihat Menggunakan gambar dari repositori pribadi. Untuk informasi lebih lanjut tentang filedocker-compose.yml
, lihat Buat referensi filedi situs web Docker. -
Dockerfile
Itu opsional. Buat satu jika Anda membutuhkan Elastic Beanstalk untuk membangun dan menjalankan gambar kustom lokal. Untuk informasi lebih lanjut tentangDockerfile
, lihat Referensi Dockerfiledi situs web Docker. -
Anda mungkin perlu membuat
.zip
file. Jika Anda hanya menggunakanDockerfile
file untuk menyebarkan aplikasi Anda, Anda tidak perlu membuatnya. Jika Anda menggunakan file konfigurasi tambahan, file.zip harus menyertakan fileDockerfile
,docker-compose.yml
file aplikasi Anda, dan dependensi file aplikasi apa pun. TheDockerfile
dandocker-compose.yml
harus berada di root, atau tingkat atas, dari arsip.zip. Jika Anda menggunakan EB CLI untuk menyebarkan aplikasi Anda, itu akan membuat file.zip untuk Anda.
Untuk mempelajari lebih lanjut tentang Docker Compose dan cara menginstalnya, lihat situs Docker Gambaran umum Docker Compose
Mengelola gambar tanpa Docker Compose di Elastic Beanstalk
Jika Anda tidak menggunakan Docker Compose untuk mengelola image Docker, Anda harus mengonfigurasi Dockerrun.aws.json
fileDockerfile
, atau keduanya.
-
Buat
Dockerfile
untuk membangun Elastic Beanstalk dan jalankan gambar khusus secara lokal. -
Buat file
Dockerrun.aws.json v1
untuk menyebarkan gambar Docker dari repositori host ke Elastic Beanstalk. -
Anda mungkin perlu membuat
.zip
file. Jika Anda hanya menggunakan salah satu dari salah satu fileDockerrun.aws.json
,Dockerfile
atau file, maka Anda tidak perlu membuat file.zip. Jika Anda menggunakan kedua file, maka Anda memerlukan file.zip. File.zip harus menyertakan fileDockerfile
dan fileDockerrun.aws.json
, bersama dengan file yang berisi file aplikasi Anda ditambah dependensi file aplikasi apa pun. Jika Anda menggunakan EB CLI untuk menyebarkan aplikasi Anda, itu akan membuat.zip
file untuk Anda.
Dockerrun.aws.json
file konfigurasi v1
File Dockerrun.aws.json
menjelaskan cara menggunakan gambar Docker jauh sebagai aplikasi Elastic Beanstalk. JSONFile ini khusus untuk Elastic Beanstalk. Jika aplikasi Anda berjalan pada gambar yang tersedia di repositori host, Anda dapat menentukan gambar dalam file Dockerrun.aws.json v1
dan menghapus Dockerfile
.
Versi Dockerrun.aws.json
Parameter AWSEBDockerrunVersion
menunjukkan versi file Dockerrun.aws.json
.
-
Platform Docker AL2 dan AL2 023 menggunakan versi file berikut.
Dockerrun.aws.json v3
— lingkungan yang menggunakan Docker Compose.
Dockerrun.aws.json v1
— lingkungan yang tidak menggunakan Docker Compose.
-
ECSberjalan di Amazon Linux 2 dan ECSberjalan di AL2 023 menggunakan
Dockerrun.aws.json v2
file. Platform pensiunan ECS-Multicontainer Docker Amazon Linux AMI (AL1) juga menggunakan versi yang sama.
Tombol dan nilai yang valid untuk file Dockerrun.aws.json v1
tersebut meliputi operasi berikut ini:
- AWSEBDockerrunVersion
-
(Wajib) Tentukan nomor versi
1
jika Anda tidak menggunakan Docker Compose untuk mengelola gambar Anda. - Autentikasi
-
(Diperlukan hanya untuk repositori pribadi) Menentukan objek Amazon S3 menyimpan file
.dockercfg
.Lihat Menggunakan gambar dari repositori pribadi di Elastic Beanstalk di Menggunakan gambar dari repositori pribadi nanti di bagian ini.
- image
-
Menentukan gambar dasar Docker pada repositori Docker yang ada dari mana Anda sedang membangun sebuah kontainer Docker. Tentukan nilai nama kunci dalam format
<organization>/<image name>
untuk gambar di Docker Hub, atau<site>/<organization name>/<image name>
untuk situs lain.Bila Anda menentukan gambar pada file
Dockerrun.aws.json
, setiap contoh di lingkungan Elastic Beanstalk Anda menjalankandocker pull
untuk menjalankan gambar. Opsional, termasuk kunci Update. Nilai defaultnya adalahtrue
dan menginstruksikan Elastic Beanstalk untuk memeriksa repositori, menarik setiap update ke gambar, dan menimpa gambar cache.Saat menggunakan
Dockerfile
, tidak boleh menentukan kunci imagekunci di fileDockerrun.aws.json
. Elastic Beanstalk selalu membuat dan menggunakan gambar yang dijelaskan dalamDockerfile
ketika salah satu hadir. - Port
-
(Diperlukan saat Anda menentukan kunci image) Cantumkan port untuk mengekspos pada kontainer Docker. Elastic Beanstalk ContainerPortmenggunakan nilai untuk menghubungkan wadah Docker ke proxy terbalik yang berjalan di host.
Anda dapat menentukan beberapa port kontainer, tapi Elastic Beanstalk hanya menggunakan port pertama. Menggunakan port ini untuk menghubungkan kontainer Anda ke reverse proxy host dan rute permintaan dari internet publik. Jika Anda menggunakan a
Dockerfile
, ContainerPortnilai pertama harus cocok dengan entri pertamaDockerfile
dalam EXPOSEdaftar.Secara opsional, Anda dapat menentukan daftar port di HostPort. HostPortentri menentukan port host yang ContainerPortnilainya dipetakan. Jika Anda tidak menentukan HostPortnilai, nilai defaultnya. ContainerPort
{ "Image": { "Name": "
image-name
" }, "Ports": [ { "ContainerPort":8080
, "HostPort":8000
} ] } - Volume
-
Memetakan volume dari EC2 instance ke container Docker Anda. Menentukan satu atau lebih array volume untuk dipetakan.
{ "Volumes": [ { "HostDirectory": "
/path/inside/host
", "ContainerDirectory": "/path/inside/container
" } ] ... - Pencatatan log
-
Menentukan direktori di dalam kontainer tempat aplikasi Anda menulis log. Elastic Beanstalk mengunggah log apapun dalam direktori ini ke Amazon S3 ketika Anda meminta log tail atau bundel log. Jika Anda memutar log ke folder bernama
rotated
dalam direktori ini, Anda juga dapat mengkonfigurasi Elastic Beanstalk untuk mengunggah log diputar ke Amazon S3 untuk penyimpanan permanen. Untuk informasi selengkapnya, lihat Melihat log dari EC2 instans Amazon di lingkungan Elastic Beanstalk Anda. - , , perintah
-
Menentukan perintah untuk dijalankan dalam kontainer. Jika Anda menentukanEntrypoint, kemudianPerintahditambahkan sebagai argumen untukEntrypoint. Untuk informasi selengkapnya, lihat CMD
di dokumentasi Docker. - Entrypoint
-
Tentukan perintah default untuk menjalankan ketika kontainer dimulai. Untuk informasi selengkapnya, lihat ENTRYPOINT
di dokumentasi Docker.
Potongan gambar berikut adalah contoh yang menunjukkan sintaksfile Dockerrun.aws.json
untuk kontainer tunggal.
{
"AWSEBDockerrunVersion": "1",
"Image": {
"Name": "janedoe/image",
"Update": "true"
},
"Ports": [
{
"ContainerPort": "1234"
}
],
"Volumes": [
{
"HostDirectory": "/var/app/mydb",
"ContainerDirectory": "/etc/mysql"
}
],
"Logging": "/var/log/nginx",
"Entrypoint": "/app/bin/myapp",
"Command": "--argument"
}>
Anda dapat menyediakan Elastic Beanstalk dengan hanya file Dockerrun.aws.json
, atau dengan arsip .zip
yang berisi baik file Dockerrun.aws.json
maupun Dockerfile
. Ketika Anda memberikan kedua file, file Dockerfile
menjelaskan gambar Docker dan file Dockerrun.aws.json
menyediakan informasi tambahan untuk deployment, seperti yang akan dijelaskan dalam bagian ini.
catatan
Dua file harus berada di root, atau tingkat atas, dari arsip .zip
. Jangan membuat arsip dari direktori yang berisi berkas. Sebaliknya, navigasikan ke direktori itu dan buat arsip di sana.
Ketika Anda menyediakan kedua file, tidak menentukan gambar di file Dockerrun.aws.json
. Elastic Beanstalk membuat dan menggunakan gambar yang dijelaskan dalam Dockerfile
dan mengabaikan gambar yang ditentukan dalam file Dockerrun.aws.json
.
Membangun gambar kustom dengan Dockerfile
Anda harus membuat Dockerfile
Jika Anda belum memiliki image yang ada di repositori.
potongan berikut ini adalah contoh file Dockerfile
. Jika Anda mengikuti petunjuk di QuickStart untuk Docker, Anda dapat mengunggah Dockerfile
seperti tertulis. Elastic Beanstalk menjalankan permainan 2048 ketika Anda menggunakan ini Dockerfile
.
Untuk informasi lebih lanjut tentang petunjuk yang dapat Anda sertakan dalam Dockerfile
, lihatReferensi file
FROM ubuntu:12.04
RUN apt-get update
RUN apt-get install -y nginx zip curl
RUN echo "daemon off;" >> /etc/nginx/nginx.conf
RUN curl -o /usr/share/nginx/www/master.zip -L https://codeload.github.com/gabrielecirulli/2048/zip/master
RUN cd /usr/share/nginx/www/ && unzip master.zip && mv 2048-master/* . && rm -rf 2048-master master.zip
EXPOSE 80
CMD ["/usr/sbin/nginx", "-c", "/etc/nginx/nginx.conf"]
catatan
Anda dapat menjalankan build multi-tahap dari satu Dockerfile untuk menghasilkan gambar berukuran lebih kecil dengan pengurangan kompleksitas yang signifikan. Untuk informasi selengkapnya, lihat Menggunakan build multi-tahap