ОШИБКА: ошибка синтаксического анализа Dockerfile строка 4: неизвестная инструкция: PHP7

#php #docker #docker-compose #dockerfile #php-7

#php #docker #docker-compose #dockerfile #php-7

Вопрос:

У меня есть файл dockerfile

введите описание изображения здесь

 FROM alpine:3.7

RUN apk --no-cache add
php7
php7-fpm
php7-pdo
php7-pdo_mysql
php7-mcrypt
php7-mbstring
php7-xml
php7-openssl
php7-json
php7-phar
php7-zip
php7-dom
php7-session
php7-zlib amp;amp;
php7 -r "copy('http://getcomposer.org/installer', 'composer-setup.php');" amp;amp;
php7 composer-setup.php --install-dir=/usr/bin --filename=composer amp;amp;
php7 -r "unlink('composer-setup.php');" amp;amp;
ln -sf /usr/bin/php7 /usr/bin/php amp;amp;
ln -s /etc/php7/php.ini /etc/php7/conf.d/php.ini

RUN set -x
amp;amp; addgroup -g 82 -S www-data
amp;amp; adduser -u 82 -D -S -G www-data www-data

COPY . /src
ADD .env.example /src/.env
WORKDIR /src
RUN ["/bin/sh", "-c"," php artisan key:generate"]
RUN chmod -R 777 storage
CMD php artisan serve --host=0.0.0.0
  

во время ее запуска я продолжал получать

 Creating network "portal-modules_default" with the default driver                                                                  
Building fingerprinting                                                                                                            
> ERROR: Dockerfile parse error line 4: unknown instruction: PHP7                                                                    
⚡️  portal-modules 
  

ОШИБКА: ошибка синтаксического анализа Dockerfile строка 4: неизвестная инструкция: PHP7

Есть какие-либо подсказки о том, как это исправить?

Нужно ли мне поместить amp; куда-нибудь, чтобы объединить команды?

Комментарии:

1. Смотрите docs.docker.com/develop/develop-images /…

Ответ №1:

Вот в чем проблема:

 RUN apk --no-cache add
php7
php7-fpm
php7-pdo
php7-pdo_mysql
php7-mcrypt
php7-mbstring
php7-xml
php7-openssl
php7-json
php7-phar
php7-zip
php7-dom
php7-session
php7-zlib amp;amp;
php7 -r "copy('http://getcomposer.org/installer', 'composer-setup.php');" amp;amp;
php7 composer-setup.php --install-dir=/usr/bin --filename=composer amp;amp;
php7 -r "unlink('composer-setup.php');" amp;amp;
ln -sf /usr/bin/php7 /usr/bin/php amp;amp;
ln -s /etc/php7/php.ini /etc/php7/conf.d/php.ini
  

Если вы хотите написать команду в нескольких строках, используйте обратную косую черту ( ):

 RUN apk --no-cache add 
    php7 
    php7-fpm 
    php7-pdo 
    php7-pdo_mysql 
    php7-mcrypt 
    php7-mbstring 
    php7-xml 
    php7-openssl 
    php7-json 
    php7-phar 
    php7-zip 
    php7-dom 
    php7-session 
    php7-zlib amp;amp; 
    php7 -r "copy('http://getcomposer.org/installer', 'composer-setup.php');" amp;amp; 
    php7 composer-setup.php --install-dir=/usr/bin --filename=composer amp;amp; 
    php7 -r "unlink('composer-setup.php');" amp;amp; 
    ln -sf /usr/bin/php7 /usr/bin/php amp;amp; 
    ln -s /etc/php7/php.ini /etc/php7/conf.d/php.ini
  

Добавляйте обратную косую черту к каждой строке при разрыве строки.

Полезная ссылка: https://docs.docker.com/develop/develop-images/dockerfile_best-practices /

Комментарии:

1. Почему вы оставляете 5 amp;amp; там?

2. Да, вы должны экранировать каждую новую строку в RUN . docs.docker.com/develop/develop-images/… — здесь вы можете найти несколько полезных советов и просмотреть Dockerfile синтаксис.