(Legacy) Migrasikan ke Docker berjalan pada cabang platform Amazon Linux 2 dari Docker Multi-kontainer berjalan di Amazon Linux - AWS Elastic Beanstalk

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

(Legacy) Migrasikan ke Docker berjalan pada cabang platform Amazon Linux 2 dari Docker Multi-kontainer berjalan di Amazon Linux

Sebelum rilisECS berjalan pada 64bit Amazon Linux 2cabang platform, Elastic Beanstalk menawarkan jalur migrasi alternatif ke Amazon Linux 2 untuk pelanggan dengan lingkungan berdasarkanDocker multi-kontainer berjalan pada 64bit Amazon Linuxcabang platform. Topik ini menjelaskan bahwa jalur migrasi, dan tetap berada dalam dokumen ini sebagai referensi untuk setiap pelanggan yang menyelesaikan jalur migrasi tersebut.

Kami sekarang merekomendasikan bahwa pelanggan dengan lingkungan berdasarkanDocker multi-kontainer berjalan pada 64bit Amazon Linuxcabang platform bermigrasi keECS berjalan pada 64bit Amazon Linux 2cabang platform. Berbeda dengan jalur migrasi alternatif, pendekatan ini terus menggunakan Amazon ECS untuk mengoordinasikan penyebaran kontainer ke lingkungan Docker yang dikelola ECS. Aspek ini memungkinkan pendekatan yang lebih mudah. Tidak ada perubahan pada kode sumber yang diperlukan, dan samaDockerrun.aws.jsonv2 didukung. Untuk informasi selengkapnya, lihat Migrasi Docker Multi-kontainer yang berjalan di Amazon Linux ke ECS di Amazon Linux 2023.

Anda dapat migrasi aplikasi yang berjalan di Platform Docker multi-kontainer di Amazon Linux AMI 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-kontainer. Untuk mempelajari lebih lanjut tentang Docker Compose dan cara menginstalnya, lihat situs DockerSekilas tentang Docker ComposedanPasang Docker Buat.

File docker-compose.yml

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, lihatBuat referensi file. Untuk informasi lebih lanjut tentang file Dockerrun.aws.json v2, lihat Dockerrun.aws.json v2.

docker-compose.yml Dockerrun.aws.json v2
version: '2.4' services: php-app: image: "php:fpm" volumes: - "./php-app:/var/www/html:ro" - "${EB_LOG_BASE_DIR}/php-app:/var/log/sample-app" mem_limit: 128m environment: Container: PHP nginx-proxy: image: "nginx" ports: - "80:80" volumes: - "./php-app:/var/www/html:ro" - "./proxy/conf.d:/etc/nginx/conf.d:ro" - "${EB_LOG_BASE_DIR}/nginx-proxy:/var/log/nginx" mem_limit: 128m links: - php-app
{ "AWSEBDockerrunVersion": 2, "volumes": [ { "name": "php-app", "host": { "sourcePath": "/var/app/current/php-app" } }, { "name": "nginx-proxy-conf", "host": { "sourcePath": "/var/app/current/proxy/conf.d" } } ], "containerDefinitions": [ { "name": "php-app", "image": "php:fpm", "environment": [ { "name": "Container", "value": "PHP" } ], "essential": true, "memory": 128, "mountPoints": [ { "sourceVolume": "php-app", "containerPath": "/var/www/html", "readOnly": true } ] }, { "name": "nginx-proxy", "image": "nginx", "essential": true, "memory": 128, "portMappings": [ { "hostPort": 80, "containerPort": 80 } ], "links": [ "php-app" ], "mountPoints": [ { "sourceVolume": "php-app", "containerPath": "/var/www/html", "readOnly": true }, { "sourceVolume": "nginx-proxy-conf", "containerPath": "/etc/nginx/conf.d", "readOnly": true }, { "sourceVolume": "awseb-logs-nginx-proxy", "containerPath": "/var/log/nginx" } ] } ] }

Pertimbangan Migrasi Tambahan

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.

Area 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.

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 Docker kontainer disesuaikan dengan log(Docker Compose).

Untuk setiap kontainer, Elastic Beanstalk menciptakan direktori log yang disebut /var/log/containers/<containername>. Untuk informasi lebih lanjut, lihat mountPoints dalam Format definisi kontainer.

Langkah migrasi

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.

  2. 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
  3. Menggunakaneb initperintah untuk mengkonfigurasi direktori lokal Anda untuk penyebaran ke Elastic Beanstalk.

    ~/myApplication$ eb init -p docker application-name
  4. Menggunakaneb createperintah untuk membuat lingkungan dan menyebarkan gambar Docker Anda.

    ~/myApplication$ eb create environment-name
  5. Jika aplikasi Anda adalah aplikasi web, setelah lingkungan Anda diluncurkan, gunakaneb openPerintah untuk melihatnya di peramban web.

    ~/myApplication$ eb open environment-name
  6. Anda dapat menampilkan status lingkungan yang baru dibuat menggunakaneb statusPerintah.

    ~/myApplication$ eb status environment-name