How to: Dockerizing Laravel App

Categories Uncategorized

docker-compose.yml

version: '3.7'
services:
  app:
    build:
      context: .
      dockerfile: .docker/Dockerfile
    image: 'laravelapp'
    command: bash -c 'sleep 10 && php artisan migrate:fresh --seed && php artisan serve --host 0.0.0.0'
    ports:
      - 8001:8000
    depends_on:
      db:
        condition: service_started
  db:
    image: mysql:5.7
    restart: always
    ports:
      - "3301:3306"
    environment:
      - MYSQL_ROOT_PASSWORD=pass
      - MYSQL_DATABASE=laraapp_db
      - MYSQL_USER=root
      - MYSQL_PASSWORD=pass
    volumes:
      - ./db:/var/lib/mysql

Dockerfile

FROM php:7.4.1-apache

USER root

WORKDIR /var/www/html

RUN apt-get update && apt-get install -y \
        iputils-ping procps \
        vim \
        libpng-dev \
        zlib1g-dev \
        libxml2-dev \
        libzip-dev \
        libonig-dev \
        zip \
        curl \
        unzip \
    && docker-php-ext-configure gd \
    && docker-php-ext-install -j$(nproc) gd \
    && docker-php-ext-install pdo_mysql \
    && docker-php-ext-install mysqli \
    && docker-php-ext-install zip \
    && docker-php-source delete

COPY .docker/vhost.conf /etc/apache2/sites-available/000-default.conf

RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

RUN chown -R www-data:www-data /var/www/html \
    && a2enmod rewrite

COPY . .

RUN composer install
# CMD php artisan serve --host=0.0.0.0 --port=8000
EXPOSE 8001

.env file

DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=laraapp_db
DB_USERNAME=root
DB_PASSWORD=pass

Commands:

docker-compose run app php artisan migrate 

Leave a Reply