Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

331
Views
Docker production ready php-fpm and nginx configuration

I have a small theoretical problem with combination of php-fpm, nginx and app code in Docker.

I'm trying to stick to the model when docker image does only one thing -> I have separate containers for php-fpm and nginx.

php:
    image: php:5-fpm-alpine
    expose:
        - 9000:9000
    volumes:
        - ./:/var/www/app

nginx:
    image: nginx:alpine
    ports:
        - 3000:80
    links:
        - php
    volumes:
        - ./nginx/app.conf:/etc/nginx/conf.d/app.conf
        - ./:/var/www/app

NOTE: In app.conf is root /var/www/app; Example schema from Symfony

This is great in development, but I don't know how to convert this to production ready state. Mount app directory in production is really bad practice (if I'm not wrong). In best case I copy app source code into container and use this prebuilded code (COPY . /var/www/app in Dockerfile), but in this case is impossible or I don't know how.

I need share app source code between two contatiner (nginx container and php-fpm container) because booth of that need it.

Of course I can make own nginx and php-fpm container and add COPY . /var/www/app into both of them, but I thing that is wrong way because I duplicate code and the whole build process (install dependencies, build source code, etc...) must be in both (nginx/php-fpm) containers.

I try to search but I don't find any idea how to solve this problem. A lot of articles show how to do this with docker-compose file and mount code with --volume but I didn't find any example how to use this on production (without volume).

Only one acceptable solutions for me (in this time) is make one container with nginx and php-fpm together but I'm not sure when is a good way (I try to find best practice).

Do you have any experiences with this or any idea how to solve it?

Thanks for any response!

about 4 years ago · Santiago Trujillo
2 answers
Answer question

0

I solve the problem by making a shared volume with the docker-compose file:

version: '3'

volumes:
 share_place:

services:
 php:
  image: php:5-fpm-alpine
  ports:
   - 9000:9000
  volumes:
   - share_place:/var/www/app
 nginx:
  image: nginx:alpine
  ports:
   - 3000:80
  volumes:
   - share_place:/var/www/app

This will create a volume share_place that will share the data between the two container.

about 4 years ago · Santiago Trujillo Report

0

At this time I use smth like:

Dockerfile:

FROM php:fpm
COPY . /var/www/app/
WORKDIR /var/www/app/
RUN composer install
EXPOSE 9000
VOLUME /var/www/app/web

Dockerfile.nginx

FROM nginx
COPY default /etc/nginx/default

docker-compose.yml

app:
  build:
    context: .
web:
  build:
    context: .
    dockerfile: Dockerfile.nginx
  volumes_from: app  

But in few days on 17.05 release we can do in one Dockerfile smth like:

FROM php:cli AS builder
COPY . /var/www/app/
WORKDIR /var/www/app/
RUN composer install && bin/console assets:dump

FROM php:fpm AS app
COPY --from=builder /var/www/app/src /var/www/app/vendor /var/www/app/
COPY --from=builder /var/www/app/web/app.php /var/www/app/vendo /var/www/app/web/

FROM nginx AS web
COPY default /etc/nginx/default
COPY --from=builder /var/www/app/web /var/www/app/web
about 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!