ОШИБКА: процесс сборки возвратил код завершения 137 во время сборки Docker на Tutum

Я установил новый репозиторий на Tutum, связанный с Github-репозиторием. Этот проект был успешно построен на моей локальной машине, но он потерпел неудачу на Tutum через 4 часа и дал мне следующие журналы.

Step 27 : ENTRYPOINT /www/run.sh
---> Running in 666e1e87a660
---> eeb9646f9317
Removing intermediate container 666e1e87a660
Successfully built eeb9646f9317
Creating builder1769_sut_1
[Thu Jan 07 17:42:45.675789 2016] [mpm_prefork:notice] [pid 8] AH00163: Apache/2.4.10 (Debian) PHP/5.5.30 configured -- resuming normal operations
[Thu Jan 07 17:42:45.675813 2016] [core:notice] [pid 8] AH00094: Command line: '/usr/sbin/apache2 -D FOREGROUND'
ERROR: Build process returned exit code 137
builder-1769: Terminating...
builder-1769: Terminated
ERROR: Build in 'dockerize' (bcf1bce8) failed in 4:00:52

Последний шаг 27 моего Dockerfile достигнут, и Docker возвращает сообщение "Успешно собранный eeb9646f9317", а также "ОШИБКА: процесс сборки возвратил код завершения 137" сразу после этого.

Вот мой Dockerfile

FROM php:5.5-apache

#Add Servername to avoid warning
RUN sed -i '/ServerName localhost/ d' /etc/apache2/apache2.conf && sed -i '/Listen 80/ a\ServerName localhost' /etc/apache2/apache2.conf

#Add apt packages list for Firefox
RUN echo "deb http://packages.linuxmint.com debian import" >> /etc/apt/sources.list

RUN apt-get update \
    && apt-get install -q -y --force-yes libpng-dev php5-imagick php5-curl php5-mysql php5-ssh2 vim wkhtmltopdf curl nodejs npm nodejs-legacy ruby-full default-jre firefox xvfb  \
    git zlib1g-dev libicu-dev g++ libmcrypt-dev libxml2-dev \
    && rm -rf /var/lib/apt/lists/*

RUN curl -sSL https://getcomposer.org/installer | php && mv composer.phar /usr/local/bin/composer \
    && docker-php-ext-configure intl \
    && docker-php-ext-install gd zip pdo_mysql soap mbstring intl mcrypt bcmath \
    && a2enmod expires headers rewrite \
    && pecl install apcu-4.0.10 \
    && php5enmod mcrypt pdo_mysql \
    && echo "date.timezone=Europe/Paris" >> /usr/local/etc/php/php.ini \
    && echo "short_open_tag=Off" >> /usr/local/etc/php/php.ini \
    && echo "memory_limit=-1" >> /usr/local/etc/php/php.ini \
    && echo "upload_max_filesize=6M" >> /usr/local/etc/php/php.ini \
    && echo "extension=apcu.so" >> /usr/local/etc/php/php.ini

#Firefox
ENV FIREFOX_MINOR 34.0.5
RUN [ -e /usr/bin/firefox ] && rm /usr/bin/firefox
ADD https://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${FIREFOX_MINOR}/linux-x86_64/en-US/firefox-${FIREFOX_MINOR}.tar.bz2 /tmp/
RUN apt-get install -q -y libdbus-glib-1-2
RUN tar -xvjf /tmp/firefox-${FIREFOX_MINOR}.tar.bz2 -C /opt/
RUN chmod -R +x /opt/firefox/
RUN ln -s /opt/firefox/firefox /usr/bin/firefox

ADD .docker/vhost.conf /etc/apache2/sites-available/wweeddoo.conf
RUN a2ensite wweeddoo.conf
RUN sed -i '/DocumentRoot \/var\/www\/html/ d' /etc/apache2/apache2.conf
RUN sed -i 's/var\/www/www/g' /etc/apache2/apache2.conf

ADD . /www
WORKDIR /www

# Install dependencies
RUN mkdir -p app/sessions var/cache var/logs
RUN chown -R www-data app/sessions var/cache var/logs
RUN npm install -g bower
RUN npm install -g less
RUN gem install sass
RUN composer config -g github-oauth.github.com ff040c19e1b0ae0a4b97c0a140272ec89c8da161
RUN composer install --optimize-autoloader --prefer-dist

# Add run script
ADD .docker/run.sh /www/run.sh
RUN chmod +x /www/run.sh

ENTRYPOINT ["/www/run.sh"]

И мой run.sh

chown -R www-data var/cache var/logs app/sessions
/usr/sbin/apache2ctl -D FOREGROUND

Любая идея?

6 ответов

В Mac, чтобы справиться с этим, вы можете попробовать изменить распределение памяти в Docker > Предпочтения> Память. В основном увеличение будет работать.

Я обнаружил, что это происходит в большинстве случаев, когда на сервере заканчиваются ресурсы и в основном память. У вас есть 2 варианта.

  1. Если это промежуточный сервер, вы можете позволить себе отключить docker-compose down, Затем создайте свои контейнеры, docker-compose build и после этого перезапустите сервер docker-compose up -d, -d для "отсоединен" от вашего терминала.

  2. Если это рабочий сервер, в зависимости от того, на каком сервисе вы работаете, вы можете увеличить объем памяти docker-machine вы используете, а затем построить свои контейнеры.

Все ответы выше верны.

Однако сегодня я обнаружил еще один случай (мой плохой), я был в неправильном контексте. Даже если я увеличил оперативную память, у меня все равно была та же ошибка. Поэтому всегда проверяйте правильность контекста, в котором вы находитесь.

      ❯ docker context ls
NAME                 DESCRIPTION                               DOCKER ENDPOINT                                    KUBERNETES ENDPOINT                 ORCHESTRATOR
default              Current DOCKER_HOST based configuration   unix:///var/run/docker.sock                        https://127.0.0.1:59074 (default)   swarm
desktop-linux *                                                unix:///Users/mateonunez/.docker/run/docker.sock                                       

И просто измените контекст.

      ❯ docker context use default
default
Current context is now "default"

Я надеюсь, что это может помочь кому-то.

В Mac, если вы используете последнюю версию докера, выполните следующие действия.

Docker => Настройки ... => Docker Engine => измените экспериментальную функцию, как показано ниже. Здесь я упомянул 30 ГБ, которые вы можете увеличить в зависимости от ваших потребностей.

          {
      "experimental": false,
      "builder": {
        "gc": {
          "enabled": true,
          "defaultKeepStorage": "30GB"
        }
      },
      "features": {
        "buildkit": false
      }
    }

Действительно, то, что предложил @lakhani69, должно работать. Но для меня перезапуск докер решил это.

Попробуйте использовать комплект сборки Docker. Перед командой сборки укажите DOCKER_BUILDKIT=1.

Другие вопросы по тегам