Docker compose sidecars

How to use docker containers in compose files to restore dependencies.

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.

Posted on 2021-10-13
Written by Maraf

To leave a comment, please sign-in at GitHub and comment on the issue associated with this post.