Code Monkey home page Code Monkey logo

docker-dev's Introduction

LAMP LDE

LAMP Local Development Environment on Docker

What is this? ย ย โ€”ย ย  Installation ย ย โ€”ย ย  Usage ย ย โ€”ย ย  Docs


An everyday local development environment for PHP Developers. At Pivotal Agency, we've done a buuunnnch of R&D to find the best local dev tools for our team. This is the result of our hard work. This tool has been put to its paces everyday by our team, we hope it can also help yours.


Intro ๐Ÿ‘‹

This is a set of Docker images to spin up a LAMP stack (Linux, Apache, MySQL and PHP) for developing locally. It's perfect for local development because you can very simply add new sites to specified directory and they're magically accessible as a subdomain of your chosen hostname (eg. eg. ~/Sites/info maps to http://info.localhost/).

It includes all the required dependencies for everyday PHP development with common tools like Laravel, Wordpress and Magento (1 & 2). Specifically:

Default:

  • Apache
  • PHP 8.0
    • Composer (latest)
    • Node.js (16.x) & NPM (latest)*
    • Yarn (latest)*
    • PHPCS (with Wordpress code standards added)*
    • Wordpress CLI*
    • ZSH*
  • Mailhog (latest)
  • MariaDB 10.3

Optional:

  • PHP 5.6, 7.0, 7.1, 7.2, 7.3 and 7.4
  • Memcached 1.x
  • Redis 6.x
  • HTTPS (SSL for localhost)
  • Blackfire (latest)

* Available in latest 2x PHP containers

The environment features clever domain mapping to allow you to run code for various platforms. Sites are accessible from the following URLs (by default it's http://<website>.localhost, however APACHE_HOSTNAME can modified in .env to point to a different hostname):


Prerequisites โš ๏ธ

You'll first need to install Docker Desktop (or Docker on Linux).


Installation ๐Ÿš€

On Windows, we strongly recommend running these commands inside a WSL2 container for best performance

# Clone the repo
git clone https://github.com/pvtl/docker-dev && cd docker-dev

# Create & update relevant config - For example:
#  - Point sites to your sites directory
#  - Set user/group ID's
#  - Add optional services (eg. extra PHP versions, PHPMyAdmin, Memcached etc)
cp .env.example .env

# Start the environment
docker-compose up -d

# The containers are now running. You can now:
# - Open a website in your browser using <DIRECTORY NAME>.{APACHE_HOSTNAME} (see domain mapping notes above)
# - Open a terminal window into one of the containers, via `docker-compose exec <CONTAINER NAME> bash`

Updating ๐Ÿ”„

Open a terminal window, browse to this project's folder and run:

# 1. Pull from Git
git pull
# 2. Erase previous containers
docker-compose down --remove-orphans
# 3. Get latest docker images
docker-compose pull
# 4. Rebuild Dockerfiles from scratch (inc. pull parent images)
docker-compose build --pull --no-cache --parallel
# 5. Start the new env
docker-compose up -d
# 6. Erase any unused containers, images, volumes etc. to free disk space.
docker system prune --volumes

This will also install the latest versions of all tools (eg. PHP, Redis, Node.js etc.)


Common Commands ๐Ÿ”ฅ

The Docker Engine must be running and commands must be run within this repo's root.

Command Description
docker-compose start Start all containers
docker-compose stop Stop all containers (keeps any config changes you've made to the containers)
docker-compose up -d --build --no-cache Recreate all containers from scratch
docker-compose down Tear down all containers (MySQL data and Project files are kept)
docker-compose exec php80-fpm zsh Open a zsh terminal in the PHP 8.0 container
docker-compose logs php80-fpm View all logs for PHP-FPM 8.0
docker-compose ps Show which containers are running

Further Reading

docker-dev's People

Contributors

mcnamee avatar wireblue avatar mattdillon100 avatar adipvtl avatar jeffaus avatar jean-pierregassin avatar liamso avatar dominikmiskovec avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.