JoliCode's Docker starter kit
Before using the stack (remove this chapter once done)
Before executing any command, you need to configure few parameters in the
env.project_name: This will be used to prefix all docker objects (network, images, containers)
env.project_directory: This is the host directory containing your PHP application
env.project_hostnames: This will be all your domain names, separated with comma
Note: Some Fabric tasks have been added for DX purposes. Checkout and adapt
cache_clear to your project
To save your time with certificate generation, this project already embed a basic self-signed certificate. So HTTPS will work out of the box in your browser as soon as you accept this self-signed certificate.
However, if you prefer to have valid certificate in local (some tools do not necessarily let you work with invalid certificates), you will have to:
- generate a certificate valid for your domain name
- sign this certificate with a locally trusted CA
In this case, it's recommended to use more powerful tool like mkcert.
As mkcert uses a CA root, you will need to generate a certificate on each computer
using this stack and so add
/infrastructure/services/router/certs/ to the
Alternatively, you can configure
infrastructure/docker/services/router/openssl.cnf then use
infrastructure/docker/services/router/generate-ssl.sh to create your own
certificate. Then you will have to add it to your computer CA store.
Running the application locally
A Docker environment is provided and requires you to have these tools available:
- pipenv (see these instructions for how to install)
Install and run
pipenv to install the required tools:
You can configure your current shell to be able to use fabric commands directly
(without having to prefix everything by
The Docker infrastructure provides a web stack with:
- A container with some tooling:
- Yarn / NPM
Domain configuration (first time only)
Before running the application for the first time, ensure your domain names
point the IP of your Docker daemon by editing your
This IP is probably
127.0.0.1 unless you run Docker in a special VM (docker-machine, dinghy, etc).
Note: The router binds port 80 and 443, that's why it will work with
echo '127.0.0.1 <your hostnames>' | sudo tee -a /etc/hosts
Using dinghy? Run
dinghy ip to get the IP of the VM.
Starting the stack
Launch the stack by running this command:
Note: the first start of the stack should take a few minutes.
The site is now accessible at the hostnames your have configured over HTTPS (you may need to accept self-signed SSL certificate).
Having some composer, yarn or another modifications to make on the project? Start the builder which will give you access to a container with all these tools available:
Note: You can add as many fabric command as you want. But the command should be
ran by the builder, don't forget to add
@with_builder annotation to the
fab -l to have the list of available fabric tasks.