Dockerized Laravel and MySQL for local development
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. Dockerfile
FROM ubuntu:16.04RUN 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"
APP_ENV=local APP_KEY=$your_app_key APP_DEBUG=true APP_LOG_LEVEL=debug APP_URL=https://localhostDB_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=
Gotchas
- 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 runnpm 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
ordocker-compose run db bash
Thank you for reading! Share your thoughts with me on bluesky, mastodon, or via email.
Check out some more stuff to read down below.
Most popular posts this month
- 2024
- Reinstalling Windows at 1am
- SQLite DB Migrations with PRAGMA user_version
- My Custom Miniflux CSS Theme
- How to Disable Wayland in Debian Testing
Recent Favorite Blog Posts
This is a collection of the last 8 posts that I bookmarked.
- Give Your Spouse the Gift of a Couple's Email Domain from mtlynch.io
- Skip the Next iPhone from Articles on Jose M.
- Have smart glasses finally hit an inflection point? from The Torment Nexus
- The McPhee method from the jsomers.net blog
- Pluralistic: LLMs are slot-machines (16 Aug 2025) from Pluralistic: Daily links from Cory Doctorow
- Pluralistic: Bluesky creates the world's weirdest, hardest-to-understand binding arbitration clause (15 Aug 2025) from Pluralistic: Daily links from Cory Doctorow
- Just a Little More Context Bro, I Promise, and It’ll Fix Everything from Jim Nielsen’s Blog
- The Futzing Fraction from Deciphering Glyph
Articles from blogs I follow around the net
Give a Problem. Grow a Programmer.
In 2009, I kicked off my senior year in college with a class that ultimately changed the way I thought about my degree—and my future.
via flower.codes September 15, 2025Yala stablecoin depegs after theft
The YU bitcoin-backed stablecoin list its intended dollar peg after what they described as "an attempted attack", later writing that there was an "unauthorized transfer of funds". Although they initially wrote that …
via Web3 is Going Just Great September 15, 2025How big a solar battery do I need to store *all* my home's electricity?
I have a modest set of solar panels on an entirely ordinary house in suburban London. On average they generate about 3,800kWh per year. We also use about 3,800kWh of electricity each year. Obviously, we can't use all the power produced over summer an…
via Terence Eden’s Blog September 15, 2025Generated by openring