Skip to content

Instantly share code, notes, and snippets.

@nezarfadle
Last active April 13, 2021 12:50
Show Gist options
  • Save nezarfadle/1cdb607246ba175098e97f88d9ba1b84 to your computer and use it in GitHub Desktop.
Save nezarfadle/1cdb607246ba175098e97f88d9ba1b84 to your computer and use it in GitHub Desktop.

Create a Docker Tool Image

FROM php
LABEL maintainer "nezarfadle@gmail.com" 
RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
RUN php -r "if (hash_file('sha384', 'composer-setup.php') === '756890a4488ce9024fc62c56153228907f1545c228516cbf63f885e036d37e9a59d27d63f46af1d4d07ee0f76181c7d3') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
RUN php composer-setup.php
RUN php -r "unlink('composer-setup.php');"
RUN mv composer.phar /usr/bin/composer
RUN chmod +x /usr/bin/composer
RUN apt update
RUN apt install zip unzip

How to build the image

docker build -t phptools-local .

Create a Docker Dev Image

FROM php
LABEL maintainer "nezarfadle@gmail.com" 
RUN apt update
RUN docker-php-ext-configure pdo_mysql && docker-php-ext-install pdo_mysql

How to build the image

docker build -t phpdev-local .

How to create a new Laravel project

docker run --rm -it -v $(pwd):/app -w="/app" phptools-local composer create-project laravel/laravel .

How to install docker-compose

sudo curl -L "https://github.com/docker/compose/releases/download/1.29.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

docker-compose.yml File

version: "3"
services:
    web:
        image: phpdev-local
        deploy:
          replicas: 1
        ports:
            - 8000:8000
        volumes:
            - ./:/webapp
        working_dir: /webapp
        command: "php artisan serve --host=0.0.0.0"
    database:
        image: mysql
        environment:                             
            - MYSQL_ROOT_PASSWORD=password
            - MYSQL_DATABASE=db
            - MYSQL_USER=user
            - MYSQL_PASSWORD=password
        deploy:
          replicas: 1

How to run a command inside a container using docker-compose

sudo docker-compose exec container_name php artisan migrate
sudo docker exec container_name php artisan migrate

Laravel .env file Database section

DB_CONNECTION=mysql
DB_HOST=database
DB_PORT=3306
DB_DATABASE=db
DB_USERNAME=user
DB_PASSWORD=password

Useful links

Laravel with docker-compose
PHP Startup: Unable to load dynamic library 'pdo_mysql

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment