

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

# Configurazione degli ambienti Elastic Beanstalk Docker
<a name="create_deploy_docker.container.console"></a>

Questo capitolo spiega informazioni di configurazione aggiuntive per tutti i rami della piattaforma Docker supportati, incluso il ramo della piattaforma Docker gestito da ECS. A meno che non venga identificato un ramo o un componente specifico della piattaforma in una sezione, si applicano a tutti gli ambienti che eseguono piattaforme Docker supportate e Docker gestite da ECS. 

**Nota**  
Se l'ambiente Elastic Beanstalk utilizza una versione della piattaforma AMI Amazon Linux (precedente ad Amazon Linux 2), leggi le informazioni aggiuntive presenti in [Configurazione Docker su AMI Amazon Linux (precedente ad Amazon Linux 2)](#docker-alami).

**Topics**
+ [Configurazione del software in ambienti Docker](#docker-software-config)
+ [Riferimento alle variabili di ambiente nei container](#docker-env-cfg.env-variables)
+ [Utilizzo della funzione di interpolazione per le variabili di ambiente con Docker Compose](#docker-env-cfg.env-variables-dc-interpolate)
+ [Generazione di log per report sanitari avanzati con Docker Compose](#docker-env-cfg.healthd-logging)
+ [Registrazione personalizzata del contenitore Docker con Docker Compose](#docker-env-cfg.dc-customized-logging)
+ [Immagini Docker](#docker-images)
+ [Configurazione degli aggiornamenti gestiti per gli ambienti Docker](#docker-managed-updates)
+ [Spazio dei nomi di configurazione di Docker](#docker-namespaces)
+ [Configurazione Docker su AMI Amazon Linux (precedente ad Amazon Linux 2)](#docker-alami)

## Configurazione del software in ambienti Docker
<a name="docker-software-config"></a>

È possibile utilizzare la console Elastic Beanstalk per configurare il software in esecuzione sulle istanze dell'ambiente.

**Per configurare l'ambiente Docker nella console Elastic Beanstalk**

1. Apri la console [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) e, **nell'elenco Regioni, seleziona la tua**. Regione AWS

1. Nel pannello di navigazione selezionare **Environments** (Ambienti), quindi selezionare il nome dell'ambiente dall'elenco.

1. Nel riquadro di navigazione, seleziona **Configuration** (Configurazione).

1. Nella categoria di configurazione **Updates, monitoring, and logging** (Aggiornamenti, monitoraggio e registrazione), scegli **Edit** (Modifica).

1. Apportare le modifiche necessarie alla configurazione.

1. Per salvare le modifiche scegli **Apply** (Applica) nella parte inferiore della pagina.

Per informazioni sulla configurazione delle impostazioni software in qualsiasi ambiente, consulta [Variabili di ambiente e altre impostazioni software](environments-cfg-softwaresettings.md). Le sezioni seguenti sono relative alle informazioni specifiche di Docker.

### Opzioni del container
<a name="docker-software-config.container"></a>

La sezione **Container options (Opzioni container)** contiene opzioni specifiche della piattaforma. Per gli ambienti Docker, consente di scegliere se l'ambiente include o meno il server proxy Nginx.

**Ambienti con Docker Compose**  
Se si gestisce l'ambiente Docker con Docker Compose, Elastic Beanstalk presuppone che si esegua un server proxy come container. Pertanto, il valore predefinito è **None (Nessuno)** per l'impostazione del **Proxy server (Server Proxy)** e Elastic Beanstalk non fornisce una configurazione NGINX.

**Nota**  
Anche se si seleziona **NGINX** come server proxy, questa impostazione viene ignorata in un ambiente con Docker Compose. L'impostazione predefinita **del Proxy server (Server Proxy)** continua a essere **None (Nessuno)**. 

Poiché il proxy del server Web NGINX è disabilitato per Docker sulla piattaforma Amazon Linux 2 con Docker Compose, è necessario seguire le istruzioni per la generazione dei log per la creazione di report sullo stato avanzato. Per ulteriori informazioni, consulta [Generazione di log per report sanitari avanzati con Docker Compose](#docker-env-cfg.healthd-logging).

### Proprietà dell'ambiente (variabili di ambiente)
<a name="docker-software-config.env"></a>

È possibile utilizzare le proprietà di ambiente, note anche come variabili di ambiente, per passare valori, ad esempio endpoint, impostazioni di debug e altre informazioni all'applicazione. La sezione delle **variabili di ambiente** della console consente di specificare le variabili di ambiente sulle istanze EC2 che eseguono l'applicazione. Le variabili di ambiente vengono passate all'applicazione come coppie chiave-valore.

Il codice dell'applicazione in esecuzione in un container può fare riferimento a una variabile di ambiente in base al nome e leggerne il valore. Il codice sorgente che legge queste variabili di ambiente varia in base al linguaggio di programmazione. È possibile trovare istruzioni per la lettura dei valori delle variabili di ambiente nei linguaggi di programmazione supportati dalle piattaforme gestite da Elastic Beanstalk nell'argomento della piattaforma corrispondente. Per un elenco di collegamenti a questi argomenti, consulta [Variabili di ambiente e altre impostazioni software](environments-cfg-softwaresettings.md).

**Segreti e parametri nelle variabili di ambiente Elastic Beanstalk**  
Elastic Beanstalk offre la possibilità di Gestione dei segreti AWS fare AWS Systems Manager riferimento e memorizzare i dati in variabili di ambiente. Si tratta di un'opzione sicura per consentire all'applicazione di accedere in modo nativo ai segreti e ai parametri archiviati da questi servizi senza dover gestire le chiamate API verso di essi. Le piattaforme Elastic Beanstalk Docker e Docker gestite da ECS devono essere una versione rilasciata a [partire dal 26 marzo 2025 per supportare questa](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2025-03-26-windows.html) funzionalità. Per ulteriori informazioni sull'utilizzo delle variabili di ambiente per fare riferimento ai segreti, consulta. [Recupero di segreti e parametri nelle variabili di ambiente Elastic Beanstalk](AWSHowTo.secrets.env-vars.md)

**Ambienti con Docker Compose**  
Se si gestisce l'ambiente Docker con Docker Compose, è necessario creare alcune configurazioni aggiuntive per recuperare le variabili di ambiente nei container. Affinché gli eseguibili in esecuzione nel container accedano a queste variabili di ambiente, è necessario fare riferimento a tali variabili in `docker-compose.yml`. Per ulteriori informazioni, consulta [Riferimento alle variabili di ambiente nei container](#docker-env-cfg.env-variables). 

## Riferimento alle variabili di ambiente nei container
<a name="docker-env-cfg.env-variables"></a>

Se si utilizza lo strumento Docker sulla piattaforma Docker per Amazon Linux 2, Elastic Beanstalk genera un file di ambiente Docker Compose denominato `.env` nella directory principale del progetto dell'applicazione. Questo file memorizza le variabili di ambiente configurate per Elastic Beanstalk.

**Nota**  
 Se si include un file `.env` nel bundle di applicazioni, Elastic Beanstalk non genererà un file `.env`. 

Affinché un container possa fare riferimento alle variabili di ambiente definite in Elastic Beanstalk, è necessario seguire uno o entrambi questi approcci di configurazione.
+ Aggiungi il file `.env` generato da Elastic Beanstalk all'opzione di configurazione `env_file` nel file `docker-compose.yml`.
+ Definisci direttamente le variabili di ambiente nel file `docker-compose.yml`.

I seguenti file forniscono un esempio. Il file di esempio `docker-compose.yml` illustra entrambi gli approcci. 
+ Se definisci le proprietà di ambiente `DEBUG_LEVEL=1` e `LOG_LEVEL=error`, Elastic Beanstalk genera il seguente file `.env`:

  ```
  DEBUG_LEVEL=1
  LOG_LEVEL=error
  ```
+ In questo file `docker-compose.yml`, l'opzione di configurazione `env_file` punta al file `.env` e definisce anche la variabile di ambiente `DEBUG=1` direttamente nel file `docker-compose.yml`.

  ```
  services:
    web:
      build: .
      environment:
        - DEBUG=1
      env_file:
        - .env
  ```

**Note**  
Se si imposta la stessa variabile di ambiente in entrambi i file, la variabile definita nel file `docker-compose.yml` ha la priorità sulla variabile definita nel file `.env`.
Fare attenzione a non lasciare spazi tra il segno di uguale (=) e il valore assegnato alla variabile per evitare che gli spazi vengano aggiunti alla stringa.

Per ulteriori informazioni sulle variabili di ambiente in Docker Compose, vedere [Variabili di ambiente in Compose](https://docs.docker.com/compose/environment-variables/) 

## Utilizzo della funzione di interpolazione per le variabili di ambiente con Docker Compose
<a name="docker-env-cfg.env-variables-dc-interpolate"></a>

A partire dal rilascio della piattaforma del [28 luglio 2023,](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2023-07-28-al2.html) la ramificazione della piattaforma *Docker Amazon Linux 2* offre la funzionalità di *interpolazione* Docker Compose. Con questa funzionalità, i valori in un file Compose possono essere impostati da variabili e interpolati in fase di runtime. Per ulteriori informazioni su questa funzionalità, consulta la pagina [Interpolation](https://docs.docker.com/compose/compose-file/12-interpolation/) sul sito Web della documentazione di Docker.

**Importante**  
Se desideri utilizzare questa funzionalità con le tue applicazioni, tieni presente che dovrai implementare un approccio che utilizzi gli hook della piattaforma.  
Ciò è necessario a causa di una mitigazione che abbiamo implementato nel motore della piattaforma. Questa mitigazione garantisce la compatibilità con le versioni precedenti per i clienti che non sono a conoscenza della nuova funzionalità di interpolazione e dispongono di applicazioni esistenti che utilizzano variabili di ambiente con il carattere `$`. Il motore della piattaforma aggiornato evita l'interpolazione per impostazione predefinita sostituendo il carattere `$` con i caratteri `$$`.

Di seguito è riportato un esempio di script hook della piattaforma che è possibile configurare per abilitare l'uso della funzionalità di interpolazione.

```
#!/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}"
```

Posiziona gli hook della piattaforma in entrambe queste directory:
+ `.platform/confighooks/predeploy/`
+ `.platform/hooks/predeploy/`

Per ulteriori informazioni, consulta [Hook della piattaforma](platforms-linux-extend.hooks.md) nell'argomento *Estensione delle piattaforme Linux* di questa guida.

## Generazione di log per report sanitari avanzati con Docker Compose
<a name="docker-env-cfg.healthd-logging"></a>

 L'[agente di integrità di Elastic Beanstalk](health-enhanced.md#health-enhanced-agent) fornisce parametri di integrità del sistema operativo e delle applicazioni per gli ambienti Elastic Beanstalk. Si basa sui formati di log del server Web che inoltrano le informazioni in un formato specifico.

Elastic Beanstalk presuppone l'esecuzione di un proxy del server Web come container. Di conseguenza, il proxy del server Web NGINX è disabilitato per gli ambienti Docker che eseguono Docker Compose. È necessario configurare il server per scrivere i log nel percorso e nel formato utilizzati dall'agente di integrità di Elastic Beanstalk. In questo modo è possibile utilizzare appieno i report sullo stato avanzato, anche se il proxy del server Web è disabilitato.

Per istruzioni su come eseguire questa operazione, consultare [Configurazione dei log del server Web](health-enhanced-serverlogs.md#health-enhanced-serverlogs.configure) 

## Registrazione personalizzata del contenitore Docker con Docker Compose
<a name="docker-env-cfg.dc-customized-logging"></a>

Per risolvere in modo efficiente i problemi e monitorare i servizi containerizzati, è possibile [richiedere i log delle istanze](using-features.logging.md) da Elastic Beanstalk tramite la console di gestione dell'ambiente o la CLI EB. I registri delle istanze sono composti da log di bundle e log di coda, combinati e confezionati per consentire di visualizzare i registri e gli eventi recenti in modo efficiente e diretto.

 Elastic Beanstalk crea directory di log sull'istanza di container, una per ogni servizio definito nel file `docker-compose.yml`, in `/var/log/eb-docker/containers/<service name>`. Se si utilizza la funzionalità Docker Compose sulla piattaforma Docker su Amazon Linux 2, è possibile montare queste directory nella posizione all'interno della struttura del file container in cui vengono scritti i log. Quando si montano le directory di log per la scrittura dei dati di log, Elastic Beanstalk può raccogliere i dati di log da queste directory.

**Per configurare i file di registro del servizio in modo che siano file di coda recuperabili e registri raggruppati**

1. Modificare il file `docker-compose.yml`.

1. Sotto la chiave `volumes` per il servizio aggiungere un mount bind come il seguente:

    ` "${EB_LOG_BASE_DIR}/<service name>:<log directory inside container> ` 

   Nel file di esempio `docker-compose.yml` seguente:
   +  `nginx-proxy` è *<service name>* 
   +  `/var/log/nginx` è *<log directory inside container>* 

   ```
   services:
     nginx-proxy:
       image: "nginx"
       volumes:
         - "${EB_LOG_BASE_DIR}/nginx-proxy:/var/log/nginx"
   ```


+  La directory `var/log/nginx` contiene i log per il servizio *nginx-proxy* nel container e verrà mappata alla directory `/var/log/eb-docker/containers/nginx-proxy` sull'host. 
+  Tutti i log in questa directory sono ora recuperabili come log di bundle e log di coda attraverso la funzionalità dei [log di istanza della richiesta](using-features.logging.md) di Elastic Beanstalk. 



**Note**  
*\$1\$1EB\$1LOG\$1BASE\$1DIR\$1* è una variabile di ambiente impostata da Elastic Beanstalk con il valore `/var/log/eb-docker/containers`.
Elastic Beanstalk crea automaticamente la directory `/var/log/eb-docker/containers/<service name>` per ogni servizio nel file `docker-compose.yml`.

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

Le versioni della piattaforma Docker e ECS gestita da Docker per Elastic Beanstalk supportano l'uso di immagini Docker memorizzate in un repository di immagini online pubblico o privato.

Specifica le immagini per nome in `Dockerrun.aws.json`. Nota queste convenzioni:
+ Le immagini in repository ufficiali su Docker Hub utilizzano un singolo nome (ad esempio `ubuntu` o `mongo`).
+ Le immagini in altri repository su Docker Hub vengono qualificate con un nome di organizzazione (ad esempi, `amazon/amazon-ecs-agent`).
+ Le immagini in altri repository online vengono ulteriormente qualificate tramite un nome di dominio (ad esempio `quay.io/assemblyline/ubuntu` o `account-id.dkr.ecr.us-east-2.amazonaws.com/ubuntu:trusty`). 

Per gli ambienti che utilizzano solo la piattaforma Docker, è anche possibile creare una propria immagine durante la creazione dell'ambiente con un Dockerfile. Per informazioni dettagliate, consulta [Creazione di immagini personalizzate con un Dockerfile](single-container-docker-configuration.md#single-container-docker-configuration.dockerfile). La piattaforma Docker gestita da ECS non supporta questa funzionalità.

## Configurazione degli aggiornamenti gestiti per gli ambienti Docker
<a name="docker-managed-updates"></a>

Grazie agli [aggiornamenti gestiti della piattaforma](environment-platform-update-managed.md), puoi configurare il tuo ambiente per eseguire automaticamente l'aggiornamento alla versione più recente in base a una pianificazione.

Per gli ambienti Docker, puoi decidere se eseguire un aggiornamento automatico della piattaforma su più versioni Docker, nel caso in cui la nuova versione della piattaforma includa una nuova versione Docker. Elastic Beanstalk supporta gli aggiornamenti della piattaforma gestita tra versioni Docker durante l'aggiornamento da un ambiente che esegue una versione della piattaforma Docker più recente della 2.9.0. Se una nuova versione della piattaforma include una nuova versione di Docker, Elastic Beanstalk incrementa il numero di versione dell'aggiornamento secondario. Di conseguenza, per consentire l'esecuzione di questa funzionalità su più versioni Docker, abilita gli aggiornamenti gestiti della piattaforma sia per la versione secondaria, sia per le patch. Per impedirla invece, abilita gli aggiornamenti gestiti della piattaforma per la sola applicazione degli aggiornamenti di versione delle patch.

Ad esempio, il seguente [file di configurazione](ebextensions.md) abilita gli aggiornamenti gestiti della piattaforma alle 9:00 UTC di ogni martedì, sia per la versione secondaria sia per le patch; di conseguenza, consente gli aggiornamenti gestiti su più versioni Docker:

**Example .ebextensions/ .config managed-platform-update**  

```
option_settings:
  aws:elasticbeanstalk:managedactions:
    ManagedActionsEnabled: true
    PreferredStartTime: "Tue:09:00"
  aws:elasticbeanstalk:managedactions:platformupdate:
    UpdateLevel: minor
```

Se in un ambiente è in esecuzione la versione della piattaforma Docker 2.9.0 o precedente, Elastic Beanstalk non esegue mai gli aggiornamenti gestiti se la nuova versione di configurazione della piattaforma include una nuova versione Docker.

## Spazio dei nomi di configurazione di Docker
<a name="docker-namespaces"></a>

Puoi utilizzare un [file di configurazione](ebextensions.md) per impostare le opzioni di configurazione ed eseguire alte attività di configurazione delle istanze durante le distribuzioni. Le opzioni di configurazione possono essere [specifiche della piattaforma](command-options-specific.md) o essere applicate a [tutte le piattaforme](command-options-general.md) del servizio Elastic Beanstalk nel suo complesso. *Le opzioni di configurazione sono organizzate in namespace.*

**Nota**  
 Queste informazioni si applicano solo all'ambiente Docker in cui non è in esecuzione Docker Compose. Questa opzione ha un comportamento diverso con gli ambienti Docker che eseguono Docker Compose. Per ulteriori informazioni sui servizi proxy con Docker Compose, consulta [Opzioni del container](#docker-software-config.container). 

Oltre alle [opzioni supportate per tutti gli ambienti Elastic Beanstalk](command-options-general.md), la piattaforma Docker supporta quelle incluse negli spazi dei nomi seguenti:
+ `aws:elasticbeanstalk:environment:proxy`: scegliere il server proxy per l'ambiente in uso. Docker supporta l'esecuzione di Nginx oppure nessun server proxy.

Il seguente file di configurazione di esempio consente di configurare un ambiente Docker in modo che non venga eseguito alcun server proxy.

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

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

## Configurazione Docker su AMI Amazon Linux (precedente ad Amazon Linux 2)
<a name="docker-alami"></a>

Se l'ambiente Docker di Elastic Beanstalk utilizza una versione della piattaforma AMI Amazon Linux (precedente ad Amazon Linux 2), leggi le informazioni aggiuntive presenti in questa sezione.

### Utilizzo di un file di autenticazione per un repository privato
<a name="docker-alami.images-private"></a>

Queste informazioni sono rilevanti per l'utente se si [utilizzano immagini provenienti da un repository privato](docker-configuration.remote-repo.md). A partire dalla versione Docker 1.7, il comando **docker login** ha modificato il nome del file di autenticazione e il formato del file. Le versioni della piattaforma Docker su AMI Amazon Linux (precedenti ad Amazon Linux 2) richiedono la versione precedente del file di configurazione del formato `~/.dockercfg`.

Con Docker versione 1.7 e successive, il comando **docker login** crea il file di autenticazione in `~/.docker/config.json` nel formato seguente.

```
{
    "auths":{
      "server":{
        "auth":"key"
      }
    }
  }
```

Con Docker versione 1.6.2 e versioni precedenti, il comando **docker login** crea il file di autenticazione in `~/.dockercfg` nel formato seguente.

```
{
    "server" :
    {
      "auth" : "auth_token",
      "email" : "email"
    }
  }
```

Per convertire un file `config.json`, rimuovi la chiave `auths` esterna, aggiungi una chiave `email` e appiattisci il documento in formato JSON per farlo corrispondere al formato precedente.

Sulle versioni della piattaforma Docker per Amazon Linux 2, Elastic Beanstalk utilizza il nome e il formato del file di autenticazione più recenti. Se si utilizza una versione della piattaforma Docker per Amazon Linux 2, è possibile utilizzare il file di autenticazione creato dal comando **docker login** senza alcuna conversione.

### Configurazione di volumi di storage aggiuntivi
<a name="docker-alami.volumes"></a>

Per migliorare le prestazioni su AMI Amazon Linux, Elastic Beanstalk configura due volumi di storage Amazon EBS per le istanze Amazon EC2 dell'ambiente Docker. Oltre al volume root assegnato per tutti gli ambienti Elastic Beanstalk, un secondo volume da 12 GB denominato `xvdcz` viene assegnato per lo storage delle immagini negli ambienti Docker.

Se hai bisogno di più spazio di archiviazione o i maggior IOPS per le immagini Docker, puoi personalizzare il volume dell'immagine dello storage utilizzando l'opzione di configurazione `BlockDeviceMapping` nel namespace [aws:autoscaling:launchconfiguration](command-options-general.md#command-options-general-autoscalinglaunchconfiguration).

Ad esempio, il seguente [file di configurazione](ebextensions.md) aumenta le dimensioni del volume di storage a 100 GB con 500 provisioned IOPS:

**Example .ebextensions/blockdevice-xvdcz.config**  

```
option_settings:
  aws:autoscaling:launchconfiguration:
    BlockDeviceMappings: /dev/xvdcz=:100::io1:500
```

Se utilizzi l'opzione `BlockDeviceMappings` per configurare volumi aggiuntivi per la tua applicazione, devi includere una mappatura per `xvdcz` per essere certo che venga creato. L'esempio seguente consente di configurare due volumi, il volume di storage dell'immagine `xvdcz` con le impostazioni predefinite e ulteriori 24 GB di volume dell'applicazione con nome `sdh`:

**Example .ebextensions/blockdevice-sdh.config**  

```
option_settings:
  aws:autoscaling:launchconfiguration:
    BlockDeviceMappings: /dev/xvdcz=:12:true:gp2,/dev/sdh=:24
```

**Nota**  
Quando modifichi le impostazioni in questo spazio dei nomi, Elastic Beanstalk sostituisce tutte le istanze dell'ambiente con le istanze che eseguono la nuova configurazione. Per informazioni dettagliate, consulta [Modifiche di configurazione](environments-updating.md).