Search code examples
phpdockercomposer-phpdocker-composelimesurvey

How to install PHP Composer on a Limesurvey Docker image


Forgive me if this is an obvious question. I am fairly new to docker and I am having trouble understanding the installation instructions here: https://hub.docker.com/_/composer/

I want to use PHP Composer in my Limesurvey docker image that was generated with the following docker-compose "yml" file:

limesurvey-md:
  image: mariadb
  restart: always
  ports:
    - "32805:3306"
  environment:
    MYSQL_DATABASE: limesurvey
    MYSQL_ROOT_PASSWORD: password
    MYSQL_USER: limesurvey
    MYSQL_PASSWORD: password
  volumes:
    - limesurvey-db:/var/lib/mysql
    - limesurvey-dblog:/var/log/mysql
    - limesurvey-dbetc:/etc/mysql

limesurvey:
  image: fjudith/limesurvey
  restart: always
  ports:
    - "32705:80"
  volumes:
    - limesurvey-upload:/var/www/html/upload
  links:
    - limesurvey-md:mysql

What do I need to add to my yml file to accomplish this? If it helps, there is a directory called "application" in the Limesurvey image:

 /var/www/html/application

And how do I give this composer a command while it is in the container? I am using Windows 10 and the docker container is running the default linux environment. fjudith's Limesurvey container is using the last 2.X branch of Limesurvey (the one right before 3.X) and it is running PHP 7.2


Solution

  • You can create a custom image with a dockerfile build, yo can specify the dockerfile name in the build section, the docker-compose.yml and dockerfile are in the same folder here i attach and example:

    docker-compose.yml:

    version: '3.1'
    services:
    
      limesurvey-md:
        image: mariadb
        restart: always
        ports:
          - 32805:3306
        environment:
          MYSQL_DATABASE: limesurvey
          MYSQL_ROOT_PASSWORD: password
          MYSQL_USER: limesurvey
          MYSQL_PASSWORD: password
        volumes:
          - limesurvey-db:/var/lib/mysql
          - limesurvey-dblog:/var/log/mysql
          - limesurvey-dbetc:/etc/mysql
    
      limesurvey:
        build:
            context: .
            dockerfile: dockerfile
        restart: always
        ports:
          - 32705:80
        volumes:
          - limesurvey-upload:/var/www/html/upload
        links:
          - limesurvey-md:mysql
    
    volumes:
        limesurvey-db:
            driver: local
        limesurvey-dblog:
            driver: local
        limesurvey-dbetc:
            driver: local
        limesurvey-upload:
            driver: local
    

    dockerfile:

    FROM "fjudith/limesurvey:latest"
    LABEL maintainer="[email protected]"
    
    # Install Composer
    RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer