(Legacy) Eseguire la migrazione a Docker in esecuzione sul ramo della piattaforma Amazon Linux 2 da Multi-container Docker in esecuzione su Amazon Linux - AWS Elastic Beanstalk

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

(Legacy) Eseguire la migrazione a Docker in esecuzione sul ramo della piattaforma Amazon Linux 2 da Multi-container Docker in esecuzione su Amazon Linux

Prima del rilascio del ramo di piattaforma ECS in esecuzione su Amazon Linux 2 (a 64 bit), Elastic Beanstalk ha offerto un percorso di migrazione alternativo ad Amazon Linux 2 per i clienti con ambienti basati sul ramo della piattaforma Docker multi-container in esecuzione su Amazon Linux (a 64 bit). In questo argomento viene descritto il percorso di migrazione e rimane in questo documento come riferimento per tutti i clienti che hanno completato tale percorso di migrazione.

Raccomandiamo ai clienti con ambienti basati sul ramo della piattaforma Docker multi-container in esecuzione su Amazon Linux (a 64 bit)di migrare al ramo della piattaforma ECS in esecuzione su Amazon Linux 2 (a 64 bit). A differenza del percorso di migrazione alternativo, questo approccio continua a utilizzare Amazon ECS per coordinare le distribuzioni di container negli ambienti Docker gestiti da ECS. Questo aspetto consente un approccio più semplice. Non sono richieste modifiche al codice sorgente e lo stesso Dockerrun.aws.json v2 è supportato. Per ulteriori informazioni, consulta Migrazione di Docker multi-container in esecuzione su Amazon Linux a ECS su Amazon Linux 2023.

Puoi migrare le applicazioni in esecuzione sulla piattaforma Docker multicontainer su AMI Amazon Linux alla piattaforma Docker su Amazon Linux 2. La piattaforma Docker multicontainer su AMI Amazon Linux richiede di specificare immagini dell'applicazione precompilate da eseguire come container. Dopo la migrazione, non si avrà più questa limitazione, perché la piattaforma Docker su Amazon Linux 2 consente a Elastic Beanstalk di creare le immagini del container anche durante la distribuzione. Le applicazioni continueranno a essere eseguite in ambienti Multicontainer con i vantaggi aggiuntivi dello strumento Docker Compose.

Docker Compose è uno strumento per la definizione e l'esecuzione di applicazioni Docker multi-container. Per ulteriori informazioni su Docker Compose e su come installarlo, vedere la sezione Panoramica dei siti Docker Compose e Installazione di Docker Compose.

Il file docker-compose.yml

Lo strumento Docker Compose utilizza il file docker-compose.yml per la configurazione dei servizi applicativi. Questo file sostituisce il file Dockerrun.aws.json v2 nella directory del progetto dell'applicazione e nel bundle di origine dell'applicazione. Il file docker-compose.yml viene creato manualmente e sarà utile fare riferimento al file Dockerrun.aws.json v2 per la maggior parte dei valori dei parametri.

Di seguito è riportato un esempio di un file docker-compose.yml e il file Dockerrun.aws.json v2 corrispondente per la stessa applicazione. Per ulteriori informazioni sul file docker-compose.yml, consulta le informazioni di rifermento sul file Compose. Per ulteriori informazioni sul file Dockerrun.aws.json v2, consulta 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" } ] } ] }

Ulteriori considerazioni sulla migrazione

La piattaforma Docker Amazon Linux 2 e la piattaforma AMI Docker Amazon Linux multicontainer implementano le proprietà dell'ambiente in modo diverso. Queste due piattaforme hanno anche directory di registro diverse che Elastic Beanstalk crea per ciascuno dei rispettivi container. Dopo la migrazione dalla piattaforma AMI Docker Amazon Linux multicontainer, sarà necessario essere consapevoli di queste diverse implementazioni per il nuovo ambiente della piattaforma Docker Amazon Linux 2.

Area Piattaforma Docker su Amazon Linux 2 con Docker Compose Piattaforma Docker multi-container su AMI Amazon Linux

Proprietà dell'ambiente

Affinché i container possano accedere alle proprietà dell'ambiente, è necessario aggiungere un riferimento al file .env nel file docker-compose.yml. Elastic Beanstalk genera il file .env, elencando ciascuna proprietà come variabili di ambiente. Per ulteriori informazioni, consulta Riferimento alle variabili di ambiente nei container.

Elastic Beanstalk può passare direttamente le proprietà di ambiente al container. Il codice in esecuzione nel container può accedere a queste proprietà come variabili di ambiente senza alcuna configurazione aggiuntiva.

Directory di log

Per ogni container, Elastic Beanstalk crea una directory di log chiamata /var/log/eb-docker/containers/<service name> (o ${EB_LOG_BASE_DIR}/<service name>). Per ulteriori informazioni, consulta Registrazione personalizzata del container Docker (Docker Compose).

Per ogni container, Elastic Beanstalk crea una directory di log chiamata /var/log/containers/<containername>. Per ulteriori informazioni, fai riferimento al campo mountPoints in Formato della definizione del container.

Fasi della migrazione

Per eseguire la migrazione alla piattaforma Docker su Amazon Linux 2
  1. Creare il file docker-compose.yml per l'applicazione, in base al file Dockerrun.aws.json v2 esistente. Per ulteriori informazioni, consulta la sezione di cui sopr Il file docker-compose.yml.

  2. Nella directory principale della cartella del progetto dell'applicazione, sostituire il file Dockerrun.aws.json v2 con il file docker-compose.yml appena creato.

    La struttura della directory dovrebbe essere la seguente.

    ~/myApplication |-- docker-compose.yml |-- .ebextensions |-- php-app |-- proxy
  3. Utilizzare il comando eb init per configurare la directory locale per la distribuzione in Elastic Beanstalk.

    ~/myApplication$ eb init -p docker application-name
  4. Utilizzare il eb create comando per creare un ambiente e distribuire l'immagine Docker.

    ~/myApplication$ eb create environment-name
  5. Se l'app è un'applicazione Web, dopo l'avvio dell'ambiente, utilizzare il comando eb open per visualizzarla in un browser Web.

    ~/myApplication$ eb open environment-name
  6. È possibile visualizzare lo stato dell'ambiente appena creato utilizzando il comando eb status.

    ~/myApplication$ eb status environment-name