Skip to content

Instantly share code, notes, and snippets.

@matthewpalmer
Created July 21, 2018 04:13
Show Gist options
  • Save matthewpalmer/741dc7a4c418318f85f2fa8da7de2ea1 to your computer and use it in GitHub Desktop.
Save matthewpalmer/741dc7a4c418318f85f2fa8da7de2ea1 to your computer and use it in GitHub Desktop.
kubernetes nginx php-fpm pod
# Create a pod containing the PHP-FPM application (my-php-app)
# and nginx, each mounting the `shared-files` volume to their
# respective /var/www/html directories.
kind: Pod
apiVersion: v1
metadata:
name: phpfpm-nginx-example
spec:
volumes:
# Create the shared files volume to be used in both pods
- name: shared-files
emptyDir: {}
# Add the ConfigMap we declared above as a volume for the pod
- name: nginx-config-volume
configMap:
name: nginx-config
containers:
# Our PHP-FPM application
- image: my-php-app:1.0.0
name: app
volumeMounts:
- name: shared-files
mountPath: /var/www/html
# Important! After this container has started, the PHP files
# in our Docker image aren't in the shared volume. We need to
# get them into the shared volume. If we tried to write directly
# to this volume from our Docker image the files wouldn't appear
# in the nginx container.
#
# So, after the container has started, copy the PHP files from this
# container's local filesystem (/app -- added via the Docker image)
# to the shared volume, which is mounted at /var/www/html.
lifecycle:
postStart:
exec:
command: ["/bin/sh", "-c", "cp -r /app/. /var/www/html"]
# Our nginx container, which uses the configuration declared above,
# along with the files shared with the PHP-FPM app.
- image: nginx:1.7.9
name: nginx
volumeMounts:
- name: shared-files
mountPath: /var/www/html
- name: nginx-config-volume
mountPath: /etc/nginx/nginx.conf
subPath: nginx.conf
@rsidhaarth
Copy link

For the record, I have since moved towards bundling PHP + the web server in the same image.
I believe I followed TrafeX/docker-php-nginx as an example.

Thanks for sharing this. I will make use of it :)

@patricknelson
Copy link

Same, that looks like a mature and well implemented image @lstellway.

One of those times I really wish Github Gists had reactions. That way we could just react with ๐Ÿ‘ or whatever instead of spamming the thread. ๐Ÿ˜

@WAR-S
Copy link

WAR-S commented Dec 4, 2024

Oh my God, colleagues, it's not safe to transfer files with source codes, maybe this is your case, but if you use fast-cgi, it's better to proxy it through upstream;
like this:

server_name localhost;
location / {
fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME /srv/www/public/index.php;
fastcgi_param PATH_INFO $uri;
}

At the same time, your container with nginx should not have any source code, at most some static in the form of pictures...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment