

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
<a name="single-container-docker-configuration"></a>

*Bagian ini menjelaskan cara menyiapkan image Docker Anda untuk penerapan ke Elastic Beanstalk dengan salah satu cabang Docker running atau platform. AL2 AL2023* 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](docker-quickstart.md)

**Topics**
+ [

## Mengelola gambar Anda dengan Docker Compose di Elastic Beanstalk
](#single-container-docker-configuration-dc)
+ [

## Mengelola gambar tanpa Docker Compose di Elastic Beanstalk
](#single-container-docker-configuration.no-compose)
+ [

## Membangun gambar kustom dengan Dockerfile
](#single-container-docker-configuration.dockerfile)

## Mengelola gambar Anda dengan Docker Compose di Elastic Beanstalk
<a name="single-container-docker-configuration-dc"></a>

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](https://docs.docker.com/compose/intro/features-uses/) Compose? di situs web Docker.
+ 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](docker-configuration.remote-repo.md). Untuk informasi lebih lanjut tentang file `docker-compose.yml`, lihat [ Buat referensi file ](https://docs.docker.com/compose/compose-file/) di situs web Docker.
+  `Dockerfile`Itu opsional. Buat satu jika Anda membutuhkan Elastic Beanstalk untuk membangun dan menjalankan gambar kustom lokal. Untuk informasi lebih lanjut tentang `Dockerfile`, lihat [Referensi Dockerfile](https://docs.docker.com/engine/reference/builder/) di situs web Docker.
+  Anda mungkin perlu membuat `.zip` file. Jika Anda hanya menggunakan `Dockerfile` file untuk menyebarkan aplikasi Anda, Anda tidak perlu membuatnya. Jika Anda menggunakan file konfigurasi tambahan, file.zip harus menyertakan file`Dockerfile`, `docker-compose.yml` file aplikasi Anda, dan dependensi file aplikasi apa pun. The `Dockerfile` dan `docker-compose.yml` harus 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 Docker[Sekilas tentang Docker Compose](https://docs.docker.com/compose/)dan[Pasang Docker Buat](https://docs.docker.com/compose/install/).

## Mengelola gambar tanpa Docker Compose di Elastic Beanstalk
<a name="single-container-docker-configuration.no-compose"></a>

Jika Anda tidak menggunakan Docker Compose untuk mengelola image Docker, Anda harus mengonfigurasi `Dockerrun.aws.json` file`Dockerfile`, 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 file`Dockerrun.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 file `Dockerfile` dan file`Dockerrun.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 `.zip` untuk Anda.

### `Dockerrun.aws.json`file konfigurasi v1
<a name="single-container-docker-configuration.dockerrun"></a>

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`.  
The Docker AL2 dan AL2023 platform 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 AL2023* menggunakan file. `Dockerrun.aws.json v2` Platform pensiunan *ECS-Multicontainer Docker Amazon Linux AMI AL1 (*) juga menggunakan versi yang sama ini.



#### DockerRun.aws.json v1
<a name="single-container-docker-configuration.dockerrun.awsjson"></a>

Tombol dan nilai yang valid untuk file `Dockerrun.aws.json v1` tersebut meliputi operasi berikut ini:

**AWSEBDockerrunVersi**  
(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 [Mengautentikasi dengan repositori gambarMenggunakan AWS Secrets Manager](docker-configuration.remote-repo.md#docker-configuration.remote-repo.dockerrun-aws) 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 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 menjalankan `docker pull` untuk menjalankan gambar. Opsional, termasuk kunci **Update**. Nilai defaultnya adalah`true`dan menginstruksikan Elastic Beanstalk untuk memeriksa repositori, menarik setiap update ke gambar, dan menimpa gambar cache.  
Saat menggunakan `Dockerfile`, tidak boleh menentukan kunci **image**kunci di file `Dockerrun.aws.json`. Elastic Beanstalk selalu membuat dan menggunakan gambar yang dijelaskan dalam`Dockerfile`ketika salah satu hadir.

**Port**  
(Diperlukan saat Anda menentukan kunci **image**) Cantumkan port untuk mengekspos pada kontainer Docker. Elastic Beanstalk **ContainerPort**menggunakan 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`, **ContainerPort**nilai pertama harus cocok dengan entri pertama dalam daftar **EXPOSE**. `Dockerfile`   
Secara opsional, Anda dapat menentukan daftar port di **HostPort**. **HostPort**entri menentukan port host yang **ContainerPort**nilainya dipetakan. Jika Anda tidak menentukan **HostPort**nilai, nilai defaultnya. **ContainerPort**   

```
{
  "Image": {
    "Name": "image-name"
  },
  "Ports": [
    {
      "ContainerPort": 8080,
      "HostPort": 8000
    }
  ]
}
```

****Volume****  
Memetakan volume dari contoh EC2 ke kontainer 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 instans Amazon EC2 di lingkungan Elastic Beanstalk Anda](using-features.logging.md).

**, , perintah**  
Menentukan perintah untuk dijalankan dalam kontainer. Jika Anda menentukan**Entrypoint**, kemudian**Perintah**ditambahkan sebagai argumen untuk**Entrypoint**. Untuk informasi lebih lanjut, lihat[CMD](https://docs.docker.com/engine/reference/run/#cmd-default-command-or-options)dalam dokumentasi Docker.

**Entrypoint**  
Tentukan perintah default untuk menjalankan ketika kontainer dimulai. Untuk informasi lebih lanjut, lihat[ENTRYPOINT](https://docs.docker.com/engine/reference/run/#cmd-default-command-or-options)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
<a name="single-container-docker-configuration.dockerfile"></a>

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](docker-quickstart.md), 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`, lihat[Referensi file](https://docs.docker.com/engine/reference/builder)di situs web Docker.

```
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](https://docs.docker.com/develop/develop-images/multistage-build/) di situs web dokumentasi Docker.