Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save CodingMonkTech/cafec3a17d2d29f595b01d5b394b0478 to your computer and use it in GitHub Desktop.
Save CodingMonkTech/cafec3a17d2d29f595b01d5b394b0478 to your computer and use it in GitHub Desktop.
Deploying laravel on kubernetes cluster - Ready to use configuration Files
FROM php:7.2-fpm
COPY app /var/www/
EXPOSE 9000
apiVersion: v1
kind: ConfigMap
metadata:
name: nginx-config
labels:
tier: backend
data:
config : |
server {
index index.php index.html;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
root /code/app/public;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ .php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+.php)(/.+)$;
fastcgi_pass php:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
labels:
tier: backend
app: nginx
spec:
replicas: 2
selector:
matchLabels:
app: nginx
tier: backend
template:
metadata:
labels:
app: nginx
tier: backend
spec:
volumes:
- name: dir
hostPath:
path: /code
- name: config
configMap:
name: nginx-config
items:
- key: config
path: site.conf
containers:
- name: nginx
image: nginx
volumeMounts:
- name: dir
mountPath: /code
- name: config
mountPath: /etc/nginx/conf.d
ports:
- containerPort: 80
name: http
protocol: TCP
kind: Service
apiVersion: v1
metadata:
name: nginx
labels:
tier: backend
app: nginx
spec:
ports:
- protocol: TCP
port: 80
targetPort: 80
nodePort: 32380
selector:
tier: backend
app: nginx
type: LoadBalancer
apiVersion: apps/v1
kind: Deployment
metadata:
name: php
labels:
tier: backend
spec:
replicas: 5
selector:
matchLabels:
app: php
tier: backend
template:
metadata:
labels:
app: php
tier: backend
spec:
volumes:
- name: dir
hostPath:
path: /code
containers:
- name: php
image: hirenkavad/laravel-k8:1.5.1
volumeMounts:
- name: dir
mountPath: /code
initContainers:
- name: install
image: busybox
volumeMounts:
- name: dir
mountPath: /code
command:
- cp
- "-r"
- "/var/www/."
- "/code/app"
apiVersion: v1
kind: Service
metadata:
name: php
labels:
tier: backend
spec:
selector:
app: php
tier: backend
ports:
- protocol: TCP
port: 9000
@jasperf
Copy link

jasperf commented May 28, 2020

Realized that you need to connect your Docker Hub repo to Github and build to load the README.mdand Dockerfile. I did now and have my first Laravel App image here https://hub.docker.com/r/smart48/laravel-app/dockerfile. Only tagging did not work so I also only have the latest now. But will work that out as well I am sure.

@faridmmv
Copy link

faridmmv commented Oct 3, 2023

The question is how source code appears in busybox image to copy in mounted /code directory. It doesn't have "/var/www/." directory.

@jasperf
Copy link

jasperf commented Oct 3, 2023

The question is how source code appears in busybox image to copy in mounted /code directory. It doesn't have "/var/www/." directory.

If you could share your updated code that would be great for all @faridmmv . Thanks in advance for your contribution!

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