如何在Limesurvey Docker映像上安装PHP Composer

时间:2018-06-22 16:25:16

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

如果这是一个明显的问题,请原谅我。我是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

2 个答案:

答案 0 :(得分:1)

您可以使用dockerfile构建来创建自定义映像,您可以在build部分中指定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

答案 1 :(得分:0)

感谢Brayan!我只是(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映像中创建另一个用户。