Composer无法在docker容器中工作:“https://packagist.org/packages.json”不包含有效的JSON

时间:2018-04-30 15:41:07

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

我有一个运行Symfony应用程序的docker容器(工作正常)。容器内的Composer install / require命令(例如composer require annotations)经常失败,并出现以下错误:

[Seld\JsonLint\ParsingException]                                        
  "https://packagist.org/packages.json" does not contain valid JSON       
  Parse error on line 1:                                                  
  \\\\\\u��n[7
                ���                                                    
  ^                                                                       
  Expected one of: 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '{', '['

我无法在命令成功与否时找到模式,它似乎完全随机。我觉得它可能是一个缓存/网络的东西,因为它通常工作一段时间然后停止工作一段时间,但我不确定。 Composer命令在主机系统上运行良好(Ubuntu 17.10 / 18.04 - 认为更新可能有所帮助,但没有什么区别)。容器中的所有其他东西都可以正常工作。无论我是在容器中打开shell并在那里运行命令还是通过docker-compose exec运行命令,结果都是一样的。

这是我的Dockerfile:

FROM alpine:3.6

RUN apk add --update \
    php7-fpm \
    php7-apcu \
    php7-ctype \
    php7-curl \
    php7-dom \
    php7-gd \
    php7-iconv \
    php7-imagick \
    php7-json \
    php7-intl \
    php7-mcrypt \
    php7-mbstring \
    php7-opcache \
    php7-openssl \
    php7-pdo \
    php7-pdo_mysql \
    php7-mysqli \
    php7-xml \
    php7-zlib \
    php7-phar \
    php7-tokenizer \
    php7-session \
    php7-xmlwriter \
    php7-simplexml \
    make \
    curl

RUN rm -rf /var/cache/apk/* && rm -rf /tmp/*

RUN curl --insecure https://getcomposer.org/composer.phar -o /usr/bin/composer && chmod +x /usr/bin/composer

ADD symfony.ini /etc/php7/php-fpm.d/
ADD symfony.ini /etc/php7/cli/conf.d/

ADD symfony.pool.conf /etc/php7/php-fpm.d/

CMD ["php-fpm7", "-F"]

WORKDIR /var/www/symfony
EXPOSE 9000

我通过docker-compose运行它,它将卷安装到/ var / www / symfony并公开端口:

version: '2.1'

services:
  php:
    build: .
    volumes:
      - ./symfony:/var/www/symfony
    ports:
      - 9000:9000

我如何让它工作?任何我不知道的设置,我需要为作曲家激活才能正确连接?

2 个答案:

答案 0 :(得分:1)

您可以将其添加到DockerFile:

RUN composer config --global repo.packagist composer https://packagist.org

答案 1 :(得分:0)

您也应该添加到Dockerfile

RUN apk update && apk add ca-certificates && update-ca-certificates && apk add openssl

安装作曲家后

RUN composer self-update