@mouheb_ben_mansoura Might help if you format all of your code snippets to stop this being a wall of text.
Deploying laravel app in Azure Kubernetes Service
I created a Laravel application (APP + MYSQL ) then i built docker images and it runed successfully but when i tried to deploy it into AKS it failed when I execute the container in the cluster and "ls" I don't have any application file .
This is my dockerfile :
FROM php:8.0-apache
RUN apt-get update && apt-get install -y libfreetype6-dev libjpeg-dev libpng-dev libwebp-dev --no-install-recommends && docker-php-ext-enable opcache && docker-php-ext-configure gd --with-freetype --with-jpeg && docker-php-ext-install pdo_mysql -j$(nproc) gd && apt-get autoclean -y && rm -rf /var/lib/apt/lists/*
Update apache conf to point to application public directory
ENV APACHE_DOCUMENT_ROOT=/var/www/public RUN sed -ri -e 's!/var/www/html!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/sites-available/.conf RUN sed -ri -e 's!/var/www/!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/apache2.conf /etc/apache2/conf-available/.conf
Update uploads config
RUN echo "file_uploads = On\n" "memory_limit = 1024M\n" "upload_max_filesize = 512M\n" "post_max_size = 512M\n" "max_execution_time = 1200\n" > /usr/local/etc/php/conf.d/uploads.ini
Enable headers module
RUN a2enmod rewrite headers
This is my docker-compose :
version: '3.8' services:
# Application & web server
app:
build:
context: .
working_dir: /var/www
volumes:
- ./:/var/www
depends_on:
- "db"
ports:
- 80:80
db:
image: mysql:5.7
container_name: db
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: mydb
ports:
- "6033:3306"
volumes:
- dbdata:/var/lib/mysql
phpmyadmin:
image: phpmyadmin/phpmyadmin
container_name: pma
links:
- db
environment:
PMA_HOST: db
PMA_PORT: 3306
PMA_ARBITRARY: 1
restart: always
ports:
- 8081:80
volumes: dbdata:
deployment of application :
apiVersion: v1 kind: Service metadata: name: webapp-sql-service spec: ports:
- port: 80 selector: app: webapp-sql
apiVersion: apps/v1 kind: Deployment metadata: name: webapp-sql spec: replicas: 1 selector: matchLabels: app: webapp-sql template: metadata: labels: app: webapp-sql spec: nodeSelector: "kubernetes.io/os": linux imagePullSecrets: - name: mysecret1 containers: - name: webapp-sql image: laravelregistry.azurecr.io/employeesmanager_app:latest env: - name: ALLOW_EMPTY_PASSWORD value: "yes" resources: requests: cpu: 100m memory: 128Mi limits: cpu: 250m memory: 256Mi ports: - containerPort: 80
And deployment of mysql :
apiVersion: v1 kind: Service metadata: name: mysql-service
namespace: mysql-database
spec: type: NodePort ports:
- port: 3306 nodePort: 30037 targetPort: 3306 selector: app: mysql
apiVersion: apps/v1 kind: Deployment metadata: name: mysql-deployment
namespace: mysql-database
labels: app: mysql spec: replicas: 1 selector: matchLabels: app: mysql template: metadata: labels: app: mysql spec: nodeSelector: "kubernetes.io/os": linux imagePullSecrets: - name: mysecret1 containers: - name: mysql image: laravelregistry.azurecr.io/mysql:latest resources: requests: cpu: 100m memory: 128Mi limits: cpu: 250m memory: 256Mi ports: - containerPort: 3306 env: - name: MYSQL_ROOT_PASSWORD valueFrom: secretKeyRef: name: mysql-secret key: mysql-root-username - name: MYSQL_DATABASE valueFrom: secretKeyRef: name: mysql-secret key: mysql-root-password
Please or to participate in this conversation.