

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

# Bermigrasi ke Elastic Beanstalk Docker yang berjalan di Amazon Linux 2 dari Multi-container Docker yang berjalan di Amazon Linux
<a name="docker-multicontainer-migration"></a>

Sebelum rilis *ECS Running pada cabang platform Amazon Linux 2 64bit*, Elastic Beanstalk menawarkan jalur migrasi alternatif ke Amazon Linux 2 untuk pelanggan dengan lingkungan berdasarkan *Multi-container Docker* yang berjalan pada cabang platform Amazon Linux 64bit. Topik ini menjelaskan jalur migrasi tersebut, dan tetap ada dalam dokumen ini sebagai referensi untuk setiap pelanggan yang menyelesaikan jalur migrasi tersebut.

Kami sekarang merekomendasikan agar pelanggan dengan lingkungan berdasarkan *Multi-container Docker yang berjalan pada cabang platform Amazon Linux 64bit* bermigrasi ke *ECS Running pada cabang platform Amazon Linux 2 64bit*. Tidak seperti jalur migrasi alternatif, pendekatan ini terus menggunakan Amazon ECS untuk mengoordinasikan penerapan kontainer ke lingkungan Docker yang dikelola ECS. Aspek ini memungkinkan pendekatan yang lebih mudah. Tidak ada perubahan pada kode sumber yang diperlukan, dan `Dockerrun.aws.json` v2 yang sama didukung. Untuk informasi selengkapnya, lihat [Migrasi aplikasi Elastic Beanstalk Anda dari Docker Multi-container yang dikelola ECS ke ECS di Amazon Linux 2023 AL1](migrate-to-ec2-AL2-platform.md). 

## Migrasi Legacy dari Multi-container Docker di Amazon Linux ke cabang platform Docker Amazon Linux 2
<a name="docker-multicontainer-migration-to-docker-al2"></a>

Anda dapat migrasi aplikasi yang berjalan di [Platform Docker multi-kontainer di Amazon Linux AMI](create_deploy_docker_ecs.md) ke platform Amazon Linux 2 Docker. Platform Docker Multi-kontainer di Amazon Linux AMI meminta Anda menentukan gambar aplikasi bawaan untuk dijalankan sebagai kontainer. Setelah bermigrasi, Anda tidak akan lagi memiliki batasan ini, karena platform Amazon Linux 2 Docker juga memungkinkan Elastic Beanstalk untuk membuat gambar kontainer Anda selama deployment. Aplikasi Anda akan terus berjalan di lingkungan multi-kontainer dengan tambahan manfaat dari alat Docker Compose.





Docker Compose adalah alat untuk mendefinisikan dan menjalankan aplikasi Docker multi-container. 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/).

### File `docker-compose.yml`
<a name="docker-multicontainer-migration.files"></a>

Alat Docker Compose menggunakan file `docker-compose.yml` untuk konfigurasi layanan aplikasi Anda. File ini menggantikan file `Dockerrun.aws.json v2` dalam direktori proyek aplikasi Anda dan bundel sumber aplikasi. Anda membuat file `docker-compose.yml` secara manual, dan akan merasakan manfaatnya untuk mereferensikan file `Dockerrun.aws.json v2` untuk sebagian besar nilai parameter.

Di bawah ini adalah contoh file `docker-compose.yml` dan file `Dockerrun.aws.json v2` yang terkait untuk aplikasi yang sama. Untuk informasi lebih lanjut tentang file `docker-compose.yml`, lihat[Buat referensi file](https://docs.docker.com/compose/compose-file/). Untuk informasi lebih lanjut tentang file `Dockerrun.aws.json v2`, lihat [`Dockerrun.aws.json` v2](create_deploy_docker_v2config.md#create_deploy_docker_v2config_dockerrun). 


| **`docker-compose.yml`** | **`Dockerrun.aws.json v2`** | 
| --- | --- | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/elasticbeanstalk/latest/dg/docker-multicontainer-migration.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/elasticbeanstalk/latest/dg/docker-multicontainer-migration.html)  | 
|  <pre>version: '2.4'<br />services:<br />  php-app:<br />    image: "php:fpm"<br />    volumes:<br />      - "./php-app:/var/www/html:ro"<br />      - "${EB_LOG_BASE_DIR}/php-app:/var/log/sample-app"<br />    mem_limit: 128m<br />    environment:<br />      Container: PHP<br />  nginx-proxy:<br />    image: "nginx"<br />    ports:<br />      - "80:80"<br />    volumes:<br />      - "./php-app:/var/www/html:ro"<br />      - "./proxy/conf.d:/etc/nginx/conf.d:ro"<br />      - "${EB_LOG_BASE_DIR}/nginx-proxy:/var/log/nginx"<br />    mem_limit: 128m<br />    links:<br />      - php-app</pre>  | 
|  <pre>{<br />  "AWSEBDockerrunVersion": 2,<br />  "volumes": [<br />    {<br />      "name": "php-app",<br />      "host": {<br />        "sourcePath": "/var/app/current/php-app"<br />      }<br />    },<br />    {<br />      "name": "nginx-proxy-conf",<br />      "host": {<br />        "sourcePath": "/var/app/current/proxy/conf.d"<br />      }<br />    }<br />  ],<br />  "containerDefinitions": [<br />    {<br />      "name": "php-app",<br />      "image": "php:fpm",<br />      "environment": [<br />        {<br />          "name": "Container",<br />          "value": "PHP"<br />        }<br />      ],<br />      "essential": true,<br />      "memory": 128,<br />      "mountPoints": [<br />        {<br />          "sourceVolume": "php-app",<br />          "containerPath": "/var/www/html",<br />          "readOnly": true<br />        }<br />      ]<br />    },<br />    {<br />      "name": "nginx-proxy",<br />      "image": "nginx",<br />      "essential": true,<br />      "memory": 128,<br />      "portMappings": [<br />        {<br />          "hostPort": 80,<br />          "containerPort": 80<br />        }<br />      ],<br />      "links": [<br />        "php-app"<br />      ],<br />      "mountPoints": [<br />        {<br />          "sourceVolume": "php-app",<br />          "containerPath": "/var/www/html",<br />          "readOnly": true<br />        },<br />        {<br />          "sourceVolume": "nginx-proxy-conf",<br />          "containerPath": "/etc/nginx/conf.d",<br />          "readOnly": true<br />        },<br />        {<br />          "sourceVolume": "awseb-logs-nginx-proxy",<br />          "containerPath": "/var/log/nginx"<br />        }<br />      ]<br />    }<br />  ]<br />}<br /> </pre>  | 

### Pertimbangan Migrasi Tambahan
<a name="docker-multicontainer-migration.considerations"></a>

Platform Docker Amazon Linux 2 dan Multi-kontainer Docker Amazon Linux AMI platform menerapkan properti lingkungan secara berbeda. Kedua platform ini juga memiliki direktori log yang berbeda yang mana Elastic Beanstalk membuat untuk setiap kontainer mereka. Setelah Anda bermigrasi dari platform Amazon Linux AMI Multi-container Docker, Anda perlu mengetahui implementasi yang berbeda ini untuk lingkungan platform Amazon Linux 2 Docker baru Anda.


|  **Luas**  |  **Platform Docker di Amazon Linux 2 dengan Docker Compose**  |  **Platform Docker multi-kontainer di Amazon Linux AMI**  | 
| --- | --- | --- | 
|  Properti lingkungan  |  Agar kontainer Anda dapat mengakses properti lingkungan Anda harus menambahkan referensi ke file `.env` di file `docker-compose.yml`. Elastic Beanstalk menghasilkan file `.env`, yang mencantumkan masing-masing properti sebagai variabel lingkungan. Untuk informasi selengkapnya, lihat [Referensi variabel lingkungan dalam kontainer](create_deploy_docker.container.console.md#docker-env-cfg.env-variables).   |  Elastic Beanstalk dapat secara langsung memberikan properti lingkungan ke kontainer. Kode Anda berjalan dalam kontainer dapat mengakses properti ini sebagai variabel lingkungan tanpa konfigurasi tambahan.   | 
|  Direktori log  |  Untuk setiap kontainer Elastic Beanstalk menciptakan direktori log yang disebut `/var/log/eb-docker/containers/<service name>` (atau `${EB_LOG_BASE_DIR}/<service name>`). Untuk informasi selengkapnya, lihat [Pencatatan khusus wadah Docker dengan Docker Compose](create_deploy_docker.container.console.md#docker-env-cfg.dc-customized-logging).   |  Untuk setiap kontainer, Elastic Beanstalk menciptakan direktori log yang disebut `/var/log/containers/<containername>`. Untuk informasi lebih lanjut, lihat `mountPoints` dalam [Format definisi kontainer](create_deploy_docker_v2config.md#create_deploy_docker_v2config_dockerrun_format).   | 

### Langkah migrasi
<a name="docker-multicontainer-migration.procedure"></a>

**Migrasi ke Platform Docker Amazon Linux 2**

1. Buat file `docker-compose.yml ` untuk aplikasi Anda, berdasarkan file `Dockerrun.aws.json v2` yang ada. Untuk informasi selengkapnya, lihat bagian [File `docker-compose.yml`](#docker-multicontainer-migration.files).

1. Dalam direktori root folder proyek aplikasi Anda, ganti file `Dockerrun.aws.json v2` dengan `docker-compose.yml` yang baru Anda buat. 

   Struktur direktori Anda harus sebagai berikut.

   ```
   ~/myApplication
   |-- docker-compose.yml
   |-- .ebextensions
   |-- php-app
   |-- proxy
   ```

1. Menggunakan**eb init**perintah untuk mengkonfigurasi direktori lokal Anda untuk penyebaran ke Elastic Beanstalk.

   ```
   ~/myApplication$ eb init -p docker application-name
   ```

1. Menggunakan**eb create**perintah untuk membuat lingkungan dan menyebarkan gambar Docker Anda.

   ```
   ~/myApplication$ eb create environment-name
   ```

1. Jika aplikasi Anda adalah aplikasi web, setelah lingkungan Anda diluncurkan, gunakan**eb open**Perintah untuk melihatnya di peramban web.

   ```
   ~/myApplication$ eb open environment-name
   ```

1. Anda dapat menampilkan status lingkungan yang baru dibuat menggunakan**eb status**Perintah.

   ```
   ~/myApplication$ eb status environment-name
   ```