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
Questa sezione descrive come preparare l'immagine Docker per la distribuzione su Elastic Beanstalk con uno dei rami della piattaforma Docker in esecuzione o 023. AL2 AL2 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
Argomenti
Gestione delle immagini con Docker Compose in Elastic Beanstalk
Puoi scegliere di utilizzare Docker Compose per gestire vari servizi in un unico file. YAML Per saperne di più su Docker Compose, consulta Perché usare Compose?
-
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 repository privato, sarà necessario eseguire alcune configurazioni aggiuntive. Per ulteriori informazioni, consulta Utilizzo di immagini da un repository privato. Per ulteriori informazioni sul filedocker-compose.yml
, consulta le informazioni di riferimento sul file Composesul sito Web Docker. -
Dockerfile
È facoltativo. Creane una se hai bisogno di Elastic Beanstalk per creare ed eseguire un'immagine personalizzata locale. Per ulteriori informazioni sul fileDockerfile
, consulta le informazioni di riferimento su Dockerfilesul sito Web Docker. -
Potrebbe essere necessario creare un file.
.zip
Se si utilizza solo unDockerfile
file per distribuire l'applicazione, non è necessario crearne uno. Se si utilizzano file di configurazione aggiuntivi, il file.zip deve includere ilDockerfile
, il file, idocker-compose.yml
file dell'applicazione e tutte le dipendenze tra i file dell'applicazione. L'Dockerfile
edocker-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
Gestione delle immagini senza Docker Compose in Elastic Beanstalk
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, ilDockerfile
o ilDockerrun.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 cheDockerrun.aws.json
, oltre al file contenente i file dell'applicazioneDockerfile
e tutte le dipendenze dei file dell'applicazione. Se utilizzate l'EB CLI per distribuire l'applicazione, questo crea automaticamente un.zip
file.
Dockerrun.aws.json
file di configurazione v1
Un file Dockerrun.aws.json
descrive come distribuire un'immagine Docker in remoto come applicazione Elastic Beanstalk. Questo JSON file è specifico di 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
.
-
Le piattaforme Docker AL2 e AL2 023 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.
-
ECSin esecuzione su Amazon Linux 2 e ECSin esecuzione su AL2 023 utilizza il
Dockerrun.aws.json v2
file. La piattaforma ritirata ECS-Anche il Multicontainer Docker Amazon AMI Linux AL1 () utilizzava la stessa versione.
Chiavi e valori validi per il file Dockerrun.aws.json v1
includono le seguenti operazioni:
- AWSEBDockerrunVersion
-
(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 Utilizzo di immagini da un archivio privato in Elastic Beanstalk 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. Specificate il valore della chiave Name nel formato
<organization>/<image name>
per le immagini su Docker Hub, oppure<site>/<organization name>/<image name>
per altri siti.Quando nel file
Dockerrun.aws.json
si specifica un'immagine, ogni istanza nell'ambiente Elastic Beanstalk eseguedocker 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 fileDockerrun.aws.json
. Elastic Beanstalk crea e utilizza sempre l'immagine descritta nel fileDockerfile
quando presente. - Porte
-
(Obbligatorio quando specifichi la chiave Image) Elenca le porte da esporre sul container Docker. Elastic Beanstalk ContainerPortutilizza 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 stai usando un
Dockerfile
, il primo ContainerPortvalore deve corrispondere alla prima voce nell'elenco.Dockerfile
EXPOSEFacoltativamente, puoi specificare un elenco di porte in HostPort. HostPortle voci specificano le porte host a cui sono mappati ContainerPorti valori. Se non si specifica un HostPortvalore, il valore predefinito è il valore. ContainerPort
{ "Image": { "Name": "
image-name
" }, "Ports": [ { "ContainerPort":8080
, "HostPort":8000
} ] } - Volumi
-
Mappa i volumi da un'EC2istanza al tuo contenitore 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 EC2 istanze Amazon nel tuo ambiente Elastic Beanstalk. - Comando
-
Specificare un comando da eseguire nel container. Se specifichi un Entrypoint, Command viene aggiunto come argomento in Entrypoint. Per ulteriori informazioni, consulta la documentazione CMD
di Docker. - Entrypoint
-
Specificare un comando predefinito da eseguire all'avvio del container. Per ulteriori informazioni, consulta la documentazione ENTRYPOINT
di 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
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, 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
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