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