如何在nginx和php容器之间进行通信

I have PHP web application and i want to convert it into docker.

I have these containers

mysql
php
nginx

I have source code in my host folder as /var/www/site1

Now when i launch nginx , then i can mount site1 to nginx as /usr/nginx/share/html

But i am not sure how does i link with PHP conainer. Can't i have stand alone PHP container with only PHP installed or I need to have some webserver along with PHP

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.