

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
<a name="create_deploy_docker.container.console"></a>

Bab ini menjelaskan informasi konfigurasi tambahan untuk semua cabang platform Docker yang didukung, termasuk cabang platform Docker yang dikelola ECS. Kecuali cabang platform tertentu atau komponen cabang platform diidentifikasi dalam suatu bagian, itu berlaku untuk semua lingkungan yang menjalankan platform Docker dan ECS yang didukung Docker yang didukung. 

**catatan**  
Jika lingkungan Node.js Elastic Beanstalk Anda menggunakan versi platform Amazon Linux AMI (Amazon Linux 2 yang terdahulu), baca informasi di [Konfigurasi docker di Amazon Linux AMI (sebelumnya Amazon Linux 2)](#docker-alami).

**Topics**
+ [Mengkonfigurasi perangkat lunak di lingkungan Docker](#docker-software-config)
+ [Referensi variabel lingkungan dalam kontainer](#docker-env-cfg.env-variables)
+ [Menggunakan fitur interpolasi untuk variabel lingkungan dengan Docker Compose](#docker-env-cfg.env-variables-dc-interpolate)
+ [Membuat log untuk pelaporan kesehatan yang ditingkatkan dengan Docker Compose](#docker-env-cfg.healthd-logging)
+ [Pencatatan khusus wadah Docker dengan Docker Compose](#docker-env-cfg.dc-customized-logging)
+ [Gambar Docker](#docker-images)
+ [Mengkonfigurasi pembaruan terkelola untuk lingkungan Docker](#docker-managed-updates)
+ [Ruang nama konfigurasi Docker](#docker-namespaces)
+ [Konfigurasi docker di Amazon Linux AMI (sebelumnya Amazon Linux 2)](#docker-alami)

## Mengkonfigurasi perangkat lunak di lingkungan Docker
<a name="docker-software-config"></a>

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**

1. **Buka konsol [Elastic Beanstalk, dan di daftar Wilayah, pilih konsol Elastic](https://console.aws.amazon.com/elasticbeanstalk) Beanstalk.** Wilayah AWS

1. Di panel navigasi, pilih **Lingkungan**, dan kemudian pilih nama lingkungan Anda dari daftar.

1. Pada panel navigasi, pilih **Konfigurasi**.

1. Dalam kategori konfigurasi **Pembaruan, pemantauan, dan pencatatan**, pilih **Edit**.

1. Membuat perubahan konfigurasi yang diperlukan.

1. Untuk menyimpan perubahan pilih **Terapkan** di bagian bawah halaman.

Untuk informasi tentang mengkonfigurasi pengaturan perangkat lunak di lingkungan apa pun, lihat[Variabel lingkungan dan pengaturan perangkat lunak lainnya](environments-cfg-softwaresettings.md). Bagian berikut mencakup informasi spesifik Docker.

### Opsi kontainer
<a name="docker-software-config.container"></a>

**Opsi kontainer**bagian memiliki pilihan platform-spesifik. Untuk lingkungan Docker, ini memungkinkan Anda memilih apakah lingkungan Anda menyertakan server proxy NGINX 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 defaultnya adalah**Tidak ada**untuk**Server proksi**pengaturan, dan Elastic Beanstalk tidak menyediakan konfigurasi NGINX.

**catatan**  
Bahkan jika Anda memilih**NGINX**sebagai server proxy, pengaturan ini diabaikan dalam lingkungan dengan Docker Compose. Pengaturan **Server proksi** masih default pada **Tidak ada**. 

Karena proxy server web NGINX dinonaktifkan untuk platform Docker di Amazon Linux 2 dengan Docker Compose, Anda harus mengikuti petunjuk untuk menghasilkan log untuk pelaporan kondisi yang ditingkatkan. Untuk informasi selengkapnya, lihat [Membuat log untuk pelaporan kesehatan yang ditingkatkan dengan Docker Compose](#docker-env-cfg.healthd-logging).

### Properti lingkungan (variabel lingkungan)
<a name="docker-software-config.env"></a>

Anda dapat menggunakan properti lingkungan, (juga dikenal sebagai variabel lingkungan), untuk meneruskan nilai, titik akhir seperti, pengaturan debug, dan informasi lainnya ke aplikasi Anda. Bagian **Environment variable** pada konsol memungkinkan Anda menentukan variabel lingkungan pada instance EC2 yang menjalankan aplikasi Anda. Variabel lingkungan diteruskan sebagai pasangan kunci-nilai ke aplikasi.

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, lihat[Variabel lingkungan dan pengaturan perangkat lunak lainnya](environments-cfg-softwaresettings.md).

**Rahasia dan parameter dalam variabel lingkungan Elastic Beanstalk**  
Elastic Beanstalk menawarkan kemampuan AWS Secrets Manager untuk AWS Systems Manager referensi dan Parameter Menyimpan data dalam variabel lingkungan. Ini adalah opsi aman untuk aplikasi Anda untuk mengakses rahasia dan parameter asli yang disimpan oleh layanan ini tanpa harus mengelola panggilan API ke mereka. Platform Elastic Beanstalk Docker dan ECS Docker yang dikelola ECS Anda harus merupakan versi yang dirilis pada [atau setelah](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2025-03-26-windows.html) 26 Maret 2025 untuk mendukung fitur ini. Untuk informasi selengkapnya tentang penggunaan variabel lingkungan untuk mereferensikan rahasia, lihat[Mengambil rahasia dan parameter ke variabel lingkungan Elastic Beanstalk](AWSHowTo.secrets.env-vars.md).

**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 mengetahui informasi selengkapnya, lihat [Referensi variabel lingkungan dalam kontainer](#docker-env-cfg.env-variables). 

## Referensi variabel lingkungan dalam kontainer
<a name="docker-env-cfg.env-variables"></a>

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 konfigurasi `env_file` di file `docker-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` dan `LOG_LEVEL=error`, Elastic Beanstalk menghasilkan file `.env` berikut untuk Anda:

  ```
  DEBUG_LEVEL=1
  LOG_LEVEL=error
  ```
+ Dalam file `docker-compose.yml`, opsi konfigurasi `env_file` menunjuk ke file `.env`, dan itu juga mendefinisikan variabel lingkungan `DEBUG=1` secara langsung di file `docker-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, lihat[Variabel lingkungan dalam Compose](https://docs.docker.com/compose/environment-variables/) 

## Menggunakan fitur interpolasi untuk variabel lingkungan dengan Docker Compose
<a name="docker-env-cfg.env-variables-dc-interpolate"></a>

*Dimulai dengan rilis platform [28 Juli 2023](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2023-07-28-al2.html), 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](https://docs.docker.com/compose/compose-file/12-interpolation/) dokumentasi Docker.

**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](platforms-linux-extend.hooks.md) di topik *Memperluas platform Linux* dari panduan ini.

## Membuat log untuk pelaporan kesehatan yang ditingkatkan dengan Docker Compose
<a name="docker-env-cfg.healthd-logging"></a>

 [Agen health Elastic Beanstalk](health-enhanced.md#health-enhanced-agent) 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 web NGINX dinonaktifkan untuk lingkungan Docker 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](health-enhanced-serverlogs.md#health-enhanced-serverlogs.configure) 

## Pencatatan khusus wadah Docker dengan Docker Compose
<a name="docker-env-cfg.dc-customized-logging"></a>

Agar dapat memecahkan masalah dan memantau layanan kontainer secara efisien, Anda dapat [meminta instans log](using-features.logging.md) 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/<service name>`. 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.

**Untuk mengonfigurasi file log layanan Anda menjadi file ekor dan log bundel yang dapat diambil**

1. Mengedit file `docker-compose.yml`.

1. 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's[Permintaan log instance](using-features.logging.md)fungsional. 



**Catatan**  
*\$1 \$1EB\$1LOG\$1BASE\$1DIR\$1*adalah variabel lingkungan yang ditetapkan oleh Elastic Beanstalk dengan nilai`/var/log/eb-docker/containers`.
Elastic Beanstalk secara otomatis menciptakan direktori `/var/log/eb-docker/containers/<service name>` untuk setiap layanan di file `docker-compose.yml`.

## Gambar Docker
<a name="docker-images"></a>

Cabang platform Docker yang dikelola Docker dan ECS untuk Elastic Beanstalk mendukung penggunaan gambar Docker yang disimpan dalam repositori gambar online publik atau pribadi.

Tentukan gambar berdasarkan nama di`Dockerrun.aws.json`. 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`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](single-container-docker-configuration.md#single-container-docker-configuration.dockerfile). Untuk rincian selengkapnya, Platform Docker yang dikelola ECS tidak mendukung fungsi ini.

## Mengkonfigurasi pembaruan terkelola untuk lingkungan Docker
<a name="docker-managed-updates"></a>

Dengan[Pembaruan platform terkelola](environment-platform-update-managed.md), 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, hal berikut [file konfigurasi](ebextensions.md) memungkinkan pembaruan platform terkelola pada 9:00 AM UTC setiap hari Selasa untuk pembaruan versi minor dan patch, sehingga memungkinkan untuk pembaruan terkelola di seluruh versi Docker:

**Example .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
<a name="docker-namespaces"></a>

Anda dapat menggunakan [file konfigurasi](ebextensions.md) untuk mengatur pilihan konfigurasi dan melakukan tugas-tugas konfigurasi contoh lain selama penyebaran. Opsi konfigurasi dapat berupa [platform khusus](command-options-specific.md) atau berlaku untuk [semua platform di layanan](command-options-general.md) 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](#docker-software-config.container). 

Platform Docker mendukung opsi di ruang nama berikut, selain [opsi yang didukung untuk semua lingkungan Elastic Beanstalk](command-options-general.md):
+ `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.

**Example .ebextensions/docker-settings.config**  

```
option_settings:
  aws:elasticbeanstalk:environment:proxy:
    ProxyServer: none
```

## Konfigurasi docker di Amazon Linux AMI (sebelumnya Amazon Linux 2)
<a name="docker-alami"></a>

Jika lingkungan Elastic Beanstalk Docker Anda menggunakan versi platform Amazon Linux AMI (sebelumnya Amazon Linux 2), baca informasi tambahan di bagian ini.

### Menggunakan file otentikasi untuk repositori pribadi
<a name="docker-alami.images-private"></a>

Informasi ini relevan bagi Anda jika Anda [menggunakan gambar dari repositori pribadi](docker-configuration.remote-repo.md). 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 konfiigurasi dengan format `~/.dockercfg` 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 file `config.json`, hapus bagian luar kunci `auths`, tambahkan kunci `email`, dan ratakan dokumen JSON untuk mencocokkan 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.

### Mengkonfigurasi volume penyimpanan tambahan
<a name="docker-alami.volumes"></a>

Untuk peningkatan kinerja di Amazon Linux AMI, Elastic Beanstalk mengonfigurasi dua volume penyimpanan Amazon EBS untuk instans Amazon EC2 lingkungan Docker Anda. 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 Docker gambar, Anda dapat menyesuaikan volume penyimpanan gambar dengan menggunakan pilihan konfigurasi `BlockDeviceMapping` di namespace [aws:autoscaling:launchconfiguration](command-options-general.md#command-options-general-autoscalinglaunchconfiguration).

Misalnya, [file konfigurasi](ebextensions.md) berikut meningkatkan volume penyimpanan ukuran 100 GB dengan 500 provisioned IOPS:

**Example .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`:

**Example .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](environments-updating.md) untuk rincian selengkapnya.