Docker: Nginx and php5-fpm dockers are not talking

后端 未结 3 1376
温柔的废话
温柔的废话 2021-02-04 07:48

I’d like to make a fully dockerized Drupal install. My first step is to get containers running with Nginx and php5-fpm, both Debian based. I’m on CoreOS alpha channel (using Dig

相关标签:
3条回答
  • 2021-02-04 08:36

    So, I have tested all settings and none worked between dockers while they did work with the same settings on 1 server (or also in one docker probably). Then I found out that php-fpm is not taking php files from nginx, it is receiving the path, if it can't find the same file in its own container it generates a "file not found". See here for more information: https://code.google.com/p/sna/wiki/NginxWithPHPFPM So that solves the question but not the problem, sadly. This is quite annoying for people that want to do load balancing with multiple php-fpm servers, they'd have to rsync everything or something like that. I hope someday I'll find a better solution. Thanx for the replies.

    EDIT: Perhaps I can mount the same volume in both containers and get it to work that way. That won't be a solution when using multiple servers though.

    0 讨论(0)
  • 2021-02-04 08:38

    When you are in your container as

    root@fd1a9ae0f1dd:/# , check the ports used with

    netstat -tapen | grep ":9000 "

    or

    netstat -lntpu | grep ":9000 "

    or the same commands without the grep

    0 讨论(0)
  • 2021-02-04 08:45

    The reason it doesn't work is, as you have discovered yourself, that nginx only sends the path of the PHP file to PHP-FPM, not the file itself (which would be quite inefficient). The solution is to use a third, data-only VOLUME container to host the files, and then mount it on both docker instances.

    FROM debian
    VOLUME /var/www
    CMD ['true']
    

    Build the above Dockerfile and create an instance (call it for example: storage-www), then run both the nginx and the PHP-FPM containers with the option:

    --volumes-from storage-www
    

    That will work if you run both containers on the same physical server. But you still could use different servers, if you put that data-only container on a networked file-system, such as GlusterFS, which is quite efficient and can be distributed over a large-scale network.

    Hope that helps.

    Update:

    As of 2015, the best way to make persistent links between containers is to use docker-compose.

    0 讨论(0)
提交回复
热议问题