I'm working a lot with PHP in recent months. As I didn't want to install all the tools on my computer, I went docker the way. My most recent PHP project is a module for is4wfw.
is4wfw is a CMS written in PHP that supports extensibility through modules from the 341.0 version.
So, for development of this module, I created a docker-compose to spin-up all the services it requires.
services:
web:
image: neptuo/is4wfw:341.1
links:
- mysql:db
...
phpmyadmin:
image: phpmyadmin/phpmyadmin
links:
- mysql:db
...
mysql:
image: mysql:8.0.19
...
After a bit of time I needed to install some dependency using the composer. So I did that manually and was happy.
Next week I wanted to continue on a different computer, I pulled the repository typed docker-compose up
, but the dependency wasn't there. Then I realized that I can ensure installation of the composer dependency as a separate container in the compose.
It is similar pattern that is used in Kubernetes and it is called a 'sidecar container'
...
composer:
image: composer
volumes:
- ./:/app
command: [ "composer", "install" ]
web:
image: neptuo/is4wfw:341.1
depends_on:
- "composer"
...
This setup ensures that the composer container starts before the web container, install dependencies and that happily exists.
And that's it.