My view on docker containers is that each container typically represents one process. E.g. mysql or nginx as in your example. Containers typically communicates with each other using networking or via shared files in volumes.
Each container runs its own operating system (typically specified in the FROM
-section in your Dockerfile
. In your case, you are suggesting that the nginx-container runs in one process with one operating system and that the php-libraries run in a different process (in a different os). I'm not sure if this is doable but it seems as if it is a strange way of doing things.
My suggestion is that you create two containers:
-
nginx+php
- this container holds the PHP installation as well as the Nginx-stuff
-
mysql
- this container contains the database
The container can communicate via classic networking or as linked containers.
However, the PHP-files that you wish to execute (i.e. your website) should be dynamically mounted as a data volume on the nginx+php
container or as data volume container.