Докер не находит файл - PullRequest
0 голосов
/ 02 июня 2019

Я работаю над проектом, который использует образ Docker для определенной функции, кроме того, что мне вообще не нужен Docker, поэтому я не очень разбираюсь в этом.Проблема в том, что Docker не находит файл, который на самом деле находится в папке, и процесс сборки прерывается.

При попытке создать образ с помощью docker build -t project/render-worker . ошибка такова:

Step 18/23 : RUN bin/composer-install  && php composer-setup.php --install-dir=/bin  && php -r 'unlink("composer-setup.php");'  && php /bin/composer.phar global require hirak/prestissimo
 ---> Running in 695db3bf2f02
/bin/sh: 1: bin/composer-install: not found
The command '/bin/sh -c bin/composer-install  && php composer-setup.php --install-dir=/bin  && php -r 'unlink("composer-setup.php");'  && php /bin/composer.phar global require hirak/prestissimo' returned a non-zero code: 127

Как уже упоминалось, файл composer-install действительно существует, и вот что в нем есть:

#!/bin/sh

EXPECTED_SIGNATURE="$(wget -q -O - https://composer.github.io/installer.sig)"
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
ACTUAL_SIGNATURE="$(php -r "echo hash_file('SHA384', 'composer-setup.php');")"

if [ "$EXPECTED_SIGNATURE" != "$ACTUAL_SIGNATURE" ]
then
    echo 'ERROR: Invalid installer signature'
    rm composer-setup.php
fi

По сути, это получить композитора, как вы видите.

Это файл Docker:

FROM php:7.2-apache

RUN echo 'deb http://ftp.debian.org/debian stretch-backports main' > /etc/apt/sources.list.d/backports.list
RUN apt-get update
RUN apt-get install -y --no-install-recommends \
    libpq-dev \
    libxml2-dev \
    ffmpeg \
    imagemagick \
    wget \
    git \
    zlib1g-dev \
    libpng-dev \
    unzip \
    mencoder \
    parallel \
    ruby-dev
RUN apt-get -t stretch-backports install -y --no-install-recommends \
    libav-tools \
 && rm -rf /var/lib/apt/lists/*
RUN docker-php-ext-install \
    pcntl \
    pdo_pgsql \
    pgsql \
    soap \
    gd \
    zip

RUN gem install compass
RUN a2enmod rewrite

ENV APACHE_RUN_USER root
ENV APACHE_RUN_GROUP root

EXPOSE 80

WORKDIR /app
COPY . /app

# Configuring apache to run the symfony app
COPY config/docker/apache.conf /etc/apache2/sites-enabled/000-default.conf
RUN echo "export DATABASE_URL" >> /etc/apache2/envvars \
 && echo ". /etc/environment" >> /etc/apache2/envvars

RUN wget -cqO- https://nodejs.org/dist/v10.15.3/node-v10.15.3-linux-x64.tar.xz | tar -xJ
RUN cp -a node-v10.15.3-linux-x64/bin /usr \
 && cp -a node-v10.15.3-linux-x64/include /usr \
 && cp -a node-v10.15.3-linux-x64/lib /usr \
 && cp -a node-v10.15.3-linux-x64/share /usr/ \
 && rm -rf node-v10.15.3-linux-x64 node-v10.15.3-linux-x64.tar.xz

RUN bin/composer-install \
 && php composer-setup.php --install-dir=/bin \
 && php -r "unlink('composer-setup.php');" \
 # Install prestissimo for dramatically faster `composer install`
 && php /bin/composer.phar global require hirak/prestissimo

RUN APP_ENV=prod APP_SECRET= DATABASE_URL= AWS_KEY= AWS_SECRET= AWS_REGION= MEDIA_S3_BUCKET= \
    GIPHY_API_KEY= FACEBOOK_APP_ID= FACEBOOK_APP_SECRET= \
    GOOGLE_API_KEY= GOOGLE_CLIENT_ID= GOOGLE_CLIENT_SECRET= STRIPE_SECRET_KEY= STRIPE_ENDPOINT_SECRET= \
    THEYSAIDSO_API_KEY= REV_CLIENT_API_KEY= REV_USER_API_KEY= REV_API_ENDPOINT= RENDER_QUEUE_URL= \
    CLOUDWATCH_LOG_GROUP_NAME= \
    php /bin/composer.phar install --no-interaction --no-dev --prefer-dist --optimize-autoloader --no-scripts \
    && php /bin/composer.phar clear-cache

RUN npm install \
 && node_modules/bower/bin/bower install --allow-root \
 && node_modules/grunt/bin/grunt

# Don't allow it to keep logs around; they're emitted on STDOUT and sent to AWS
# CloudWatch from there, so we don't need them on disk filling up the space
RUN mkdir -p var/cache/prod && chmod -R 777 var/cache/prod
RUN mkdir -p var/log && ln -s /dev/null var/log/prod.log \
    && ln -s /dev/null var/log/prod.deprecations.log && chmod -R 777 var/log

CMD ["/usr/bin/env", "bash", "./bin/start_render_worker"]

Как я уже сказал, к сожалению, у меня нет ни малейшего представления о том, как работает докер и что происходит, просто он мне нужен.Я использую Docker в Win10 Pro, и, что еще хуже, он действительно работает для другого разработчика, использующего Win10.Мы попробовали несколько вещей, но мы не можем заставить это работать.Я пытался клонировать репо в других местах, но безуспешно.Все до этого конкретного этапа выполняется правильно.


[ РЕДАКТИРОВАТЬ ]

В соответствии с рекомендациями пользователей, я запустил RUN ls bin/ до строки установки композитора, и эторезультат:

Step 18/24 : RUN ls bin/
 ---> Running in 6cb72090a069
append_captions
capture
composer-install
concat_project_video
console
encode_frames
encode_frames_to_gif
format_video_for_concatenation
generate_meme_bar
image_to_video
install.sh
phpcs
phpunit
process_render_queue
publish_docker_image
run_animation_worker
run_render_worker
run_render_worker_osx
start_render_worker
update
Removing intermediate container 6cb72090a069

Как вы можете видеть, composer-install там, так что это весьма сбивает с толку.

Также я проверил и установил конечную последовательность строк в LF, и результат такой жеошибка.


[ ВТОРОЕ РЕДАКТИРОВАНИЕ ]

Я добавил COPY bin/composer-install /bin Затем RUN ls bin/ И результаты те же.Команда ls находит файл, но ошибка сохраняется.Также добавление косой черты до того, как bin ничего не изменит: (

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...