Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Mempersiapkan image Docker Anda untuk penyebaran ke Elastic Beanstalk
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 file YAMB. 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. -
DockerfileItu 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
.zipfile. Jika Anda hanya menggunakanDockerfilefile untuk menyebarkan aplikasi Anda, Anda tidak perlu membuatnya. Jika Anda menggunakan file konfigurasi tambahan, file.zip harus menyertakan fileDockerfile,docker-compose.ymlfile aplikasi Anda, dan dependensi file aplikasi apa pun. TheDockerfiledandocker-compose.ymlharus berada di root, atau tingkat atas, dari arsip.zip. Jika Anda menggunakan EB CLI untuk menyebarkan aplikasi Anda, itu membuat file.zip untuk Anda.
Untuk mempelajari lebih lanjut tentang Docker Compose dan cara menginstalnya, lihat situs DockerSekilas tentang 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
Dockerfileuntuk membangun Elastic Beanstalk dan jalankan gambar khusus secara lokal. -
Buat file
Dockerrun.aws.json v1untuk menyebarkan gambar Docker dari repositori host ke Elastic Beanstalk. -
Anda mungkin perlu membuat
.zipfile. Jika Anda hanya menggunakan salah satu dari salah satu fileDockerrun.aws.json,Dockerfileatau file, maka Anda tidak perlu membuat file.zip. Jika Anda menggunakan kedua file, maka Anda memerlukan file.zip. File.zip harus menyertakan fileDockerfiledan 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, langkah itu akan membuat file.zipuntuk Anda.
Dockerrun.aws.jsonfile konfigurasi v1
File Dockerrun.aws.json menjelaskan cara menggunakan gambar Docker jauh sebagai aplikasi Elastic Beanstalk. File JSON 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.
-
ECS yang berjalan di Amazon Linux 2 dan ECS yang berjalan di AL2 023 menggunakan file tersebut.
Dockerrun.aws.json v2Platform pensiunan ECS-Multicontainer Docker Amazon Linux AMI AL1 () juga menggunakan versi yang sama ini.
Tombol dan nilai yang valid untuk file Dockerrun.aws.json v1 tersebut meliputi operasi berikut ini:
- AWSEBDockerrunVersi
-
(Wajib) Tentukan nomor versi
1jika Anda tidak menggunakan Docker Compose untuk mengelola gambar Anda. - Autentikasi
-
(Diperlukan hanya untuk repositori pribadi) Menentukan objek Amazon S3 menyimpan file
.dockercfg.Lihat Mengautentikasi dengan repositori gambar di Menggunakan gambar dari repositori pribadi nanti di Bab ini.
- image
-
Menentukan gambar dasar Docker pada repositori Docker yang ada dari mana Anda sedang membangun sebuah kontainer Docker. Tentukan nilai kunci Nama 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 pulluntuk menjalankan gambar. Opsional, termasuk kunci Update. Nilai defaultnya adalahtruedan 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 dalamDockerfileketika 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 pertama dalam daftar EXPOSE.DockerfileSecara 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
-
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
rotateddalam 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 lebih lanjut, lihatCMD
dalam dokumentasi Docker. - Entrypoint
-
Tentukan perintah default untuk menjalankan ketika kontainer dimulai. Untuk informasi lebih lanjut, lihatENTRYPOINT
dalam 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 Dockerfileseperti 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