

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

# Preparazione dell'immagine Docker per la distribuzione su Elastic Beanstalk
<a name="single-container-docker-configuration"></a>

Questa sezione descrive come preparare l'immagine Docker per la distribuzione su Elastic Beanstalk con uno *dei rami Docker in esecuzione o della* piattaforma. AL2 AL2023 I file di configurazione necessari dipendono dal fatto che le immagini siano locali, remote e se utilizzi Docker Compose.

**Nota**  
 Per un esempio di procedura che avvia un ambiente Docker, consulta l'argomento. [QuickStart per Docker](docker-quickstart.md)

**Topics**
+ [Gestione delle immagini con Docker Compose in Elastic Beanstalk](#single-container-docker-configuration-dc)
+ [Gestione delle immagini senza Docker Compose in Elastic Beanstalk](#single-container-docker-configuration.no-compose)
+ [Creazione di immagini personalizzate con un Dockerfile](#single-container-docker-configuration.dockerfile)

## Gestione delle immagini con Docker Compose in Elastic Beanstalk
<a name="single-container-docker-configuration-dc"></a>

Puoi scegliere di utilizzare Docker Compose per gestire vari servizi in un unico file YAML. [Per saperne di più su Docker Compose, vedi Perché usare Compose?](https://docs.docker.com/compose/intro/features-uses/) sul sito Web di Docker.
+ Creare un `docker-compose.yml`. Questo file è necessario se utilizzi Docker Compose per gestire la tua applicazione con Elastic Beanstalk. Se tutte le distribuzioni provengono da immagini in archivi pubblici, non sono necessari altri file di configurazione. Se le immagini di origine della distribuzione si trovano in un archivio privato, sarà necessario eseguire alcune configurazioni aggiuntive. Per ulteriori informazioni, consulta [Utilizzo di immagini da un repository privato](docker-configuration.remote-repo.md). Per ulteriori informazioni sul file`docker-compose.yml` , consulta le informazioni di [riferimento sul file Compose](https://docs.docker.com/compose/compose-file/) sul sito Web Docker.
+  Il `Dockerfile` è facoltativo. Creane una se hai bisogno di Elastic Beanstalk per creare ed eseguire un'immagine personalizzata locale. Per ulteriori informazioni sul file `Dockerfile`, consulta le informazioni di [riferimento su Dockerfile](https://docs.docker.com/engine/reference/builder/) sul sito Web Docker.
+  Potrebbe essere necessario creare un file. `.zip` Se si utilizza solo un `Dockerfile` file per distribuire l'applicazione, non è necessario crearne uno. Se si utilizzano file di configurazione aggiuntivi, il file.zip deve includere il`Dockerfile`, il file, i `docker-compose.yml` file dell'applicazione ed eventuali dipendenze tra i file dell'applicazione. L'`Dockerfile`e `docker-compose.yml` deve trovarsi alla radice, o al livello superiore, dell'archivio.zip. Se si utilizza l'EB CLI per distribuire l'applicazione, viene creato automaticamente un file.zip.

Per ulteriori informazioni su Docker Compose e su come installarlo, vedere la sezione [Panoramica dei siti Docker Compose](https://docs.docker.com/compose/) e [Installazione di Docker Compose](https://docs.docker.com/compose/install/).

## Gestione delle immagini senza Docker Compose in Elastic Beanstalk
<a name="single-container-docker-configuration.no-compose"></a>

Se non utilizzi Docker Compose per gestire le immagini Docker, dovrai configurare un file, uno o entrambi. `Dockerfile` `Dockerrun.aws.json`
+ Crea un file `Dockerfile` per far creare a Elastic Beanstalk ed eseguire un'immagine personalizzata localmente.
+ Crea un file `Dockerrun.aws.json v1` per distribuire un'immagine Docker su Elastic Beanstalk da un repository in hosting.
+ Potrebbe essere necessario creare un file. `.zip` Se si utilizza *solo uno* dei due file, il `Dockerfile` o il`Dockerrun.aws.json`, non è necessario creare un file.zip. Se si utilizzano entrambi i file, è necessario un file.zip. Il file.zip deve includere sia il che`Dockerrun.aws.json`, oltre al file contenente i file dell'applicazione `Dockerfile` e tutte le dipendenze dei file dell'applicazione. Se si utilizza la CLI EB per distribuire l'applicazione, crea un `.zip` file per te.

### `Dockerrun.aws.json`file di configurazione v1
<a name="single-container-docker-configuration.dockerrun"></a>

Un file `Dockerrun.aws.json` descrive come distribuire un'immagine Docker in remoto come applicazione Elastic Beanstalk. Questo file JSON è specifico per Elastic Beanstalk. Se la tua applicazione viene eseguita su un'immagine disponibile in un repository in hosting, puoi specificare l'immagine in un file `Dockerrun.aws.json v1` e omettere il `Dockerfile`.

**Versioni `Dockerrun.aws.json`**  
 Il parametro `AWSEBDockerrunVersion` indica la versione del file `Dockerrun.aws.json`.  
Il Docker AL2 e AL2023 le piattaforme utilizzano le seguenti versioni del file.  
`Dockerrun.aws.json v3`— ambienti che utilizzano Docker Compose.
`Dockerrun.aws.json v1`— ambienti che non utilizzano Docker Compose.
*ECS in esecuzione su Amazon Linux 2* e *ECS in esecuzione su AL2023* utilizzano il `Dockerrun.aws.json v2` file. Anche la piattaforma ritirata *ECS-The Multicontainer Docker Amazon Linux AMI AL1 ()* utilizzava questa stessa versione.



#### Dockerrun.aws.json v1
<a name="single-container-docker-configuration.dockerrun.awsjson"></a>

Chiavi e valori validi per il file `Dockerrun.aws.json v1` includono le seguenti operazioni:

**AWSEBDockerrunVersione**  
(Obbligatorio) Specificate il numero di versione `1` se non utilizzate Docker Compose per gestire l'immagine.

**Autenticazione**  
(Obbligatorio solo per i repository privati) Specifica l'oggetto Amazon S3 in cui è archiviato il file `.dockercfg`.  
Vedi [Autenticazione con archivi di immaginiUsando Gestione dei segreti AWS](docker-configuration.remote-repo.md#docker-configuration.remote-repo.dockerrun-aws) *Usare immagini da un archivio privato* più avanti in questo capitolo.

**Immagine**  
Specifica l'immagine di base Docker su un repository Docker esistente da cui crei un container Docker. Specificare il valore della chiave **Name** nel formato *<organization>/<image name>* per le immagini su Docker Hub o *<site>/<organization name>/<image name>* per altri siti.   
Quando nel file `Dockerrun.aws.json` si specifica un'immagine, ogni istanza nell'ambiente Elastic Beanstalk esegue `docker pull` per eseguire l'immagine. Opzionalmente, è possibile includere la chiave **Update**. Il valore predefinito è `true` e indica a Elastic Beanstalk di controllare il repository, estrarre gli aggiornamenti per l'immagine e sovrascrivere le immagini memorizzate nella cache.  
Quando usi un file `Dockerfile`, non specificare la chiave **Image** nel file `Dockerrun.aws.json`. Elastic Beanstalk crea e utilizza sempre l'immagine descritta nel file `Dockerfile` quando presente.

**Porte**  
(Obbligatorio quando specifichi la chiave **Image**) Elenca le porte da esporre sul container Docker. Elastic Beanstalk **ContainerPort**utilizza il valore per connettere il contenitore Docker al reverse proxy in esecuzione sull'host.  
È possibile specificare più porte del container, ma Elastic Beanstalk utilizza solo la prima porta. Utilizza questa porta per connettere il container al proxy inverso dell'host e instradare le richieste da Internet pubblico. **Se utilizzi un`Dockerfile`, il primo **ContainerPort**valore deve corrispondere alla prima voce dell'elenco EXPOSE. `Dockerfile`**   
Facoltativamente, puoi specificare un elenco di porte in. **HostPort** **HostPort**le voci specificano le porte host a cui sono mappati **ContainerPort**i valori. Se non si specifica un **HostPort**valore, il valore predefinito è il valore. **ContainerPort**   

```
{
  "Image": {
    "Name": "image-name"
  },
  "Ports": [
    {
      "ContainerPort": 8080,
      "HostPort": 8000
    }
  ]
}
```

****Volumi****  
Mappa volumi da un'istanza EC2 al tuo container Docker. Specifica uno o più array di volumi da mappare.  

```
{
  "Volumes": [
    {
      "HostDirectory": "/path/inside/host",
      "ContainerDirectory": "/path/inside/container"
    }
  ]
...
```

****Registrazione di log****  
Specificare la directory all'interno del container in cui l'applicazione scrive i log. Elastic Beanstalk carica gli eventuali log presenti in questa directory in Amazon S3 quando richiedi la parte finale del log o log in bundle. Se esegui l'accesso a una cartella denominata `rotated` all'interno di questa directory, puoi anche configurare Elastic Beanstalk per il caricamento di log ruotati in Amazon S3 per lo storage permanente. Per ulteriori informazioni, consulta [Visualizzazione dei log delle istanze Amazon EC2 nell'ambiente Elastic Beanstalk](using-features.logging.md).

**Comando**  
Specificare un comando da eseguire nel container. Se specifichi un **Entrypoint**, **Command** viene aggiunto come argomento in **Entrypoint**. Per ulteriori informazioni, consulta [CMD](https://docs.docker.com/engine/reference/run/#cmd-default-command-or-options) nella documentazione Docker.

**Entrypoint**  
Specificare un comando predefinito da eseguire all'avvio del container. Per ulteriori informazioni, consulta la sezione relativa a [ENTRYPOINT](https://docs.docker.com/engine/reference/run/#cmd-default-command-or-options) nella documentazione Docker.

Il seguente frammento è un esempio che illustra la sintassi del file `Dockerrun.aws.json` per un singolo container.

```
{
  "AWSEBDockerrunVersion": "1",
  "Image": {
    "Name": "janedoe/image",
    "Update": "true"
  },
  "Ports": [
    {
      "ContainerPort": "1234"
    }
  ],
  "Volumes": [
    {
      "HostDirectory": "/var/app/mydb",
      "ContainerDirectory": "/etc/mysql"
    }
  ],
  "Logging": "/var/log/nginx",
  "Entrypoint": "/app/bin/myapp",
  "Command": "--argument"
}>
```

Puoi fornire a Elastic Beanstalk solo il file `Dockerrun.aws.json` o un archivio `.zip` contenente i file `Dockerrun.aws.json` e `Dockerfile`. Quando fornisci entrambi i file, il `Dockerfile` descrive l'immagine Docker e il file `Dockerrun.aws.json` fornisce informazioni aggiuntive per la distribuzione, come descritto di seguito in questa sezione.

**Nota**  
I due file devono essere al livello principale, o al livello superiore, dell'archivio `.zip`. Non creare l'archivio da una directory contenente i file. Passa invece a tale directory e crea lì l'archivio.  
Quando fornisci entrambi i file, non specificare un'immagine nel file `Dockerrun.aws.json`. Elastic Beanstalk crea e utilizza l'immagine descritta nel file `Dockerfile` e ignora l'immagine specificata nel file `Dockerrun.aws.json`.

## Creazione di immagini personalizzate con un Dockerfile
<a name="single-container-docker-configuration.dockerfile"></a>

Occorre creare un `Dockerfile` se non si dispone già di un'immagine ospitata in un repository.

Il seguente frammento è un esempio del `Dockerfile`. Quando segui le istruzioni in [QuickStart per Docker](docker-quickstart.md), puoi caricare questo `Dockerfile` come indicato. Elastic Beanstalk esegue il gioco 2048 quando utilizzi questo `Dockerfile`.

Per ulteriori informazioni sulle istruzioni che puoi includere nel `Dockerfile`, consulta la [documentazione di riferimento del Dockerfile](https://docs.docker.com/engine/reference/builder) sul sito Web Docker.

```
FROM ubuntu:12.04

RUN apt-get update
RUN apt-get install -y nginx zip curl

RUN echo "daemon off;" >> /etc/nginx/nginx.conf
RUN curl -o /usr/share/nginx/www/master.zip -L https://codeload.github.com/gabrielecirulli/2048/zip/master
RUN cd /usr/share/nginx/www/ && unzip master.zip && mv 2048-master/* . && rm -rf 2048-master master.zip

EXPOSE 80

CMD ["/usr/sbin/nginx", "-c", "/etc/nginx/nginx.conf"]
```

**Nota**  
È possibile eseguire build multi-fase da un singolo Dockerfile per produrre immagini di dimensioni più piccole con una significativa riduzione della complessità. Per ulteriori informazioni, consultare [Utilizzo di build multi-fase](https://docs.docker.com/develop/develop-images/multistage-build/) sul sito Web della documentazione Docker.