Come impostare un piccolo sito web utilizzando il docker

Ho una domanda riguardo a Docker. Il concetto di questo contenitore è totalmente nuovo per me e sono sicuro che non ho capito come funzionano le cose (contenitori, Dockerfiles, …) e come potrebbero funzionare.

Diciamo che vorrei ospitare piccoli siti web sulla stessa VM che consistono di Apache, PHP-FPM, MySQL e possibilmente Memcache.

Questo è ciò che avevo in mente:

1) Un'image contenente Apache, PHP, MySQL e Memcache 2) Una o più immagini che contengono i file dei miei siti web

Devo trovare un modo per raccontare nella mia prima image, nell'apache, where sono memorizzate le cartelle di siti web per i siti web ospitati. Tuttavia, non so se il primo contenitore possa leggere i file all'interno di un altro contenitore.

Qualcuno qui ha fatto qualcosa di simile?

Grazie

La configuration del contenitore dovrebbe essere:

  1. Contenitore MySQL
  2. Contenitore Memcached
  3. Apache, PHP ecc
  4. Data Conatainer (opzionale)

Eseguire MySQL ed esporre la port utilizzando il command -p:

docker run -d --name mysql -p 3306:3306 dockerfile/mysql 

Esegui Memcached

 docker run -d --name memcached -p 11211:11211 borja/docker-memcached 

Esegui il tuo contenitore web e montate i file web dal file system host nel contenitore. Saranno disponibili a /container_fs/web_files/ all'interno del contenitore. Colbind agli altri contenitori per poter comunicare con loro su tcp.

 docker run -d --name web -p 80:80 \ -v /host_fs/web_files:/container_fs/web_files/ \ --link mysql:mysql \ --link memcached:memcached \ your/docker-web-container 

All'interno del tuo contenitore web cercare le variables di ambiente MYSQL_PORT_3306_TCP_ADDR e MYSQL_PORT_3306_TCP_PORT per indicare where convertire l'istanza mysql e similmente MEMCACHED_PORT_11211_TCP_ADDR e MEMCACHED_PORT_11211_TCP_PORT per indicare where collegarsi a memcacheed.

Il modo idiomatico di utilizzare Docker è quello di cercare di mantenere un process per contenitore. Così, Apache e MySQL ecc dovrebbe essere in contenitori separati.

È quindi ansible creare un contenitore dati per contenere i file del tuo sito web e semplicemente montare il volume nel contenitore Webserver utilizzando --volumes-from . Per ulteriori informazioni, vedere https://docs.docker.com/userguide/dockervolumes/ , in particolare "Creazione e assembly di un contenitore di volume di dati".