【问题标题】:How to install PHP Composer on a Limesurvey Docker image如何在 Limesurvey Docker 映像上安装 PHP Composer
【发布时间】:2018-12-02 04:14:06
【问题描述】:

如果这是一个明显的问题,请原谅我。我对 docker 还很陌生,无法理解此处的安装说明: https://hub.docker.com/_/composer/

我想在使用以下 docker-compose "yml" 文件生成的 Limesurvey docker 映像中使用 PHP Composer:

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

我需要在我的 yml 文件中添加什么来完成此操作?如果有帮助,Limesurvey 图像中有一个名为“应用程序”的目录:

 /var/www/html/application

当它在容器中时,我如何给这个作曲家一个命令?我使用的是 Windows 10,并且 docker 容器正在运行默认的 linux 环境。 fjudith 的 Limesurvey 容器正在使用 Limesurvey 的最后一个 2.X 分支(3.X 之前的那个),它运行的是 PHP 7.2

【问题讨论】:

    标签: php docker composer-php docker-compose limesurvey


    【解决方案1】:

    您可以使用 dockerfile 构建创建自定义映像,您可以在构建部分指定 dockerfile 名称,docker-compose.yml 和 dockerfile 在我附加的同一文件夹中并示例:

    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="ing.brayan.cm@gmail.com"
    
    # Install Composer
    RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
    

    【讨论】:

      【解决方案2】:

      谢谢布雷恩!我刚刚(10 分钟前)想出了另一种方法,您也可以执行 bash 命令。由于我在 Windows 中,因此我必须在命令提示符下执行的两行代码是

      docker exec -it <my_container_name> bash
      

      然后它让我进入“/var/www/html#”,在那里我执行了以下命令:

      $sudo curl -o /tmp/composer-setup.php https://getcomposer.org/installer && curl -o /tmp/composer-setup.sig https://composer.github.io/installer.sig && php -r "if (hash('SHA384', file_get_contents('/tmp/composer-setup.php')) !== trim(file_get_contents('/tmp/composer-setup.sig'))) { unlink('/tmp/composer-setup.php'); echo 'Invalid installer' . PHP_EOL; exit(1); }" && php /tmp/composer-setup.php --no-ansi --install-dir=/usr/local/bin --filename=composer --snapshot && rm -f /tmp/composer-setup.*
      

      我从这里改编了第二行:Get composer (php dependency manager) to run on a docker image build

      从那里很容易!你可以这样做

      composer
      

      它会引导您完成可能的命令。它建议不要使用“root”管理员。我将不得不考虑在 docker 映像中创建另一个用户。

      【讨论】:

        猜你喜欢
        • 2021-08-15
        • 2021-01-10
        • 2020-05-12
        • 2019-09-03
        • 2020-10-20
        • 2018-08-20
        • 1970-01-01
        • 2016-09-08
        • 2020-11-08
        相关资源
        最近更新 更多