Greetings Time Traveler!
It looks like you found a post that is several years old. Keep in mind that technology changes fast and some of the information in this post might no longer be relevant.
If you're stuck, leave a comment and I'll try to help if I can.
Image via GIPHY
This guide shows you how to configure docker-compose for working with Laravel and MySQL
Table of Contents
Docker is awesome. Its also quite useful for local development. The following Dockerfile and docker-compose.yml will be helpful if you want to do laravel development inside of docker. I am using Ubuntu as a base, but you can probably use the official PHP image as well.
FROM ubuntu:16.04 RUN apt update RUN apt install -y php7.0 php7.0-zip php7.0-mbstring phpunit curl php7.0-mysql RUN curl -sS https://getcomposer.org/installer | php RUN mv composer.phar /usr/local/bin/composer RUN composer global require "laravel/installer" RUN export PATH=$HOME/.config/composer/vendor/bin:$PATH
version: '2' services: app: build: . ports: - "8000:8000" volumes: - .:/code env_file: .env working_dir: /code command: bash -c 'php artisan migrate && php artisan serve --host 0.0.0.0' depends_on: - db db: image: "mysql:5.7" environment: - MYSQL_ROOT_PASSWORD=password - MYSQL_DATABASE=$your_db - MYSQL_USER=$your_db_user - MYSQL_PASSWORD=$your_db_password volumes: - ./data/:/var/lib/mysql ports: - "3306:3306"
Your .env file is what Laravel uses when it starts up set up various things. The only real thing to change is your DB connection info. A full sample is shown below:
APP_ENV=local APP_KEY=$your_app_key APP_DEBUG=true APP_LOG_LEVEL=debug APP_URL=http://localhost DB_CONNECTION=mysql DB_HOST=db DB_PORT=3306 DB_DATABASE=$your_db DB_USERNAME=$your_db_user DB_PASSWORD=$your_db_password BROADCAST_DRIVER=log CACHE_DRIVER=file SESSION_DRIVER=file QUEUE_DRIVER=sync REDIS_HOST=127.0.0.1 REDIS_PASSWORD=null REDIS_PORT=6379 MAIL_DRIVER=smtp MAIL_HOST=mailtrap.io MAIL_PORT=2525 MAIL_USERNAME=null MAIL_PASSWORD=null MAIL_ENCRYPTION=null PUSHER_APP_ID= PUSHER_KEY= PUSHER_SECRET=
- In order to do stuff with the database you should add the following record to your local /etc/hosts file
# /etc/hosts 127.0.0.1 db
- You should still install npm and run npm install from your local machine so that you can do frontend stuff.
- Since we define - .:/code as a volume, this means that all of your local changes are immediately visible in the dockerized app.
- If you need to access the running app or db container you can do so with docker-compose run app bash or docker-compose run db bash
You can add a comment via Email. Or use the embedded discourse form shown below: