Я пытаюсь Dockerize PyroCMS и это, как мой Dockerfile выглядит следующим образом:Docker build: есть ли контент с одного слоя на следующем?
FROM reynierpm/docker-centos7-supervisord:latest
ENV TERM=xterm \
PATH="/root/.composer/vendor/bin:${PATH}" \
COMPOSER_ALLOW_SUPERUSER=1 \
COMPOSER_ALLOW_XDEBUG=1 \
COMPOSER_DISABLE_XDEBUG_WARN=1 \
COMPOSER_HOME="/root/.composer" \
COMPOSER_CACHE_DIR="/root/.composer/cache"
RUN yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm \
https://rpms.remirepo.net/enterprise/remi-release-7.rpm
RUN yum install -y \
yum-utils \
git \
zip \
unzip \
wget \
nano \
php71-php-fpm \
php71-php-cli \
php71-php-common \
php71-php-gd \
php71-php-intl \
php71-php-json \
php71-php-mbstring \
php71-php-mcrypt \
php71-php-mysqlnd \
php71-php-pdo \
php71-php-pear \
php71-php-xml \
php71-php-pecl-xdebug \
php71-pecl-apcu \
php71-php-pecl-apfd \
php71-php-pecl-memcache \
php71-php-pecl-memcached \
php71-php-pecl-mongodb \
php71-php-pecl-redis \
php71-php-pecl-request \
php71-php-pecl-uploadprogress \
php71-php-pecl-xattr \
php71-php-pecl-zip && \
yum clean all && rm -rf /tmp/yum*
RUN ln -sfF /opt/remi/php71/enable /etc/profile.d/php71-paths.sh && \
ln -sfF /opt/remi/php71/root/usr/bin/{pear,pecl,phar,php,php-cgi,phpize} /usr/local/bin/. && \
mv -f /etc/opt/remi/php71/php.ini /etc/php.ini && \
ln -sfF /etc/php.ini /etc/opt/remi/php71/php.ini && \
rm -rf /etc/php.d && \
mv /etc/opt/remi/php71/php.d /etc/. && \
ln -sfF /etc/php.d /etc/opt/remi/php71/php.d
RUN /bin/sh -c "mkdir -p /data/www" && \
/bin/sh -c "mkdir -p /data/php/{tmp,sessions,xdebug,logs,uploads}" && \
rm -rf /data/www/*
COPY container-files/
WORKDIR /data/www
RUN sh /usr/local/bin/composer-install.sh
RUN git clone --branch 3.2 https://github.com/pyrocms/pyrocms.git .
COPY .env .
RUN pwd && ls -la
RUN php artisan install --ready
RUN chmod +x /config/bootstrap.sh
EXPOSE 9005
Это WIP, так что не беспокоить с оптимизацией или так далее, так как я не забочусь об этом в данный момент.
Для построения изображения я бегу docker build -t reynierpm/pyrocms .
который идет гладко до тех пор, пока не достигнет этого шага:
RUN php artisan install --ready
, где терпит неудачу со следующей ошибкой:
Step 14/16 : RUN php artisan install --ready
---> Running in ffbddd585ef1
Could not open input file: artisan
The command '/bin/sh -c php artisan install --ready' returned a non-zero code: 1
Я не уверен, что я делаю неправильно, но это то, что у меня есть до сих пор:
WORKDIR /data/www
сохранит все мои работать теперь в/data/www
, если я не изменить его на другую директорию, которую я не делаю в любой точкеRUN git clone --branch 3.2 https://github.com/pyrocms/pyrocms.git .
клонов правильно ветки репозитория, так как делатьls -la
только после команды показывает мне следующий вывод:drwxr-xr-x 16 root root 4096 Jan 26 16:50 . drwxr-xr-x 3 root root 4096 Jan 26 16:50 .. drwxr-xr-x 8 root root 4096 Jan 26 16:50 .git -rw-r--r-- 1 root root 12 Jan 26 16:50 .gitattributes -rw-r--r-- 1 root root 97 Jan 26 16:50 .gitignore -rw-r--r-- 1 root root 2254 Jan 26 16:50 CONTRIBUTING.md -rwxr-xr-x 1 root root 556 Jan 26 16:50 Gulpfile.js -rw-r--r-- 1 root root 1088 Jan 26 16:50 LICENSE.md -rw-r--r-- 1 root root 236 Jan 26 16:50 README.md drwxr-xr-x 2 root root 4096 Jan 26 16:50 addons drwxr-xr-x 3 root root 4096 Jan 26 16:50 app -rwxr-xr-x 1 root root 1646 Jan 26 16:50 artisan drwxr-xr-x 3 root root 4096 Jan 26 16:50 bootstrap -rw-r--r-- 1 root root 1525 Jan 26 16:50 build.xml -rw-r--r-- 1 root root 3708 Jan 26 16:50 composer.json drwxr-xr-x 2 root root 4096 Jan 26 16:50 config drwxr-xr-x 2 root root 4096 Jan 26 16:50 core drwxr-xr-x 5 root root 4096 Jan 26 16:50 database drwxr-xr-x 3 root root 4096 Jan 26 16:50 docs -rwxr-xr-x 1 root root 400 Jan 26 16:50 package.json -rwxr-xr-x 1 root root 1397 Jan 26 16:50 phpunit.xml drwxr-xr-x 5 root root 4096 Jan 26 16:50 public drwxr-xr-x 6 root root 4096 Jan 26 16:50 resources drwxr-xr-x 2 root root 4096 Jan 26 16:50 routes -rwxr-xr-x 1 root root 560 Jan 26 16:50 server.php drwxr-xr-x 8 root root 4096 Jan 26 16:50 storage drwxr-xr-x 2 root root 4096 Jan 26 16:50 tests drwxr-xr-x 3 root root 4096 Jan 26 16:50 tmp
COPY .env .
скопирует файл.env
в/data/www
(но если синтаксис не так уже пробовал сCOPY .env /data/www/.env
)
После выполнения шагов выше, я должен в конечном итоге с содержанием от клона и дополнительно также .dev
но это странно, так как я в конечном итоге только это:
total 12
drwxr-xr-x 2 root root 4096 Jan 26 16:54 .
drwxr-xr-x 3 root root 4096 Jan 26 16:54 ..
-rw-rw-r-- 1 root root 337 Jan 26 15:39 .env
И, конечно, это сделать сборку, чтобы потерпеть неудачу, так как файла artisan
больше нет.
Почему? Разве файлы не должны находиться между слоями? Есть идеи?
попытался удалить '.' (точку) в конце' RUN git clone [...] 'line? –
@ WebertS.Lima, если я удалю '.', он будет клонировать в подкаталоге' pyrocms', который я не хочу. – ReynierPM
О, я вижу. Как вы можете видеть, докер выводит каждый идентификатор уровня в форме '---> Запуск в ffbddd585ef1'. Вы можете попробовать 'docker exec -ti XXXX bash', где' XXXX' является идентификатором части RUN git clone [...], а затем запускать эту команду вручную. Посмотрите, что произойдет. –