【问题标题】:Docker bash file will not loadDocker bash 文件不会加载
【发布时间】:2018-10-19 08:31:39
【问题描述】:

我是 docker 新手,我尝试构建一个 php-fpm 容器,其中也应该包含 sendmail

具有以下配置

# php-fpm
FROM php:7.2-fpm

RUN apt-get update && apt-get install -y sendmail sendmail-bin mailutils openssl git libcurl4-gnutls-dev libpng-dev libfreetype6-dev libjpeg62-turbo-dev zlib1g-dev libicu-dev g++ libxml2-dev libpq-dev \
 # && git clone -b php7.2 https://github.com/phpredis/phpredis.git /usr/src/php/ext/redis \
 && docker-php-ext-install pdo pdo_mysql pdo_pgsql pgsql intl curl json opcache xml zip mysqli mbstring \
 && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
 && docker-php-ext-install -j$(nproc) gd \
 && apt-get autoremove && apt-get autoclean \
 && rm -rf /var/lib/apt/lists/* \

RUN yes | pecl install xdebug \

# configure sendmail
COPY ./*.sh /usr/local/bin/
COPY ./php_mail.ini /usr/local/etc/php/conf.d/mail.ini
RUN chmod a+x /usr/local/bin/*.sh
ENTRYPOINT ["start_sendmail_mta.sh"]

RUN update-ca-certificates

ENV PHP_DATE_TIMEZONE="Europe/Berlin" \
    PHP_LOG_ERRORS_MAX_LEN=1024 \
    PHP_LOG_ERRORS="" \
    PHP_MAX_EXECUTION_TIME=0 \
    PHP_MAX_FILE_UPLOADS=20 \
    PHP_MAX_INPUT_VARS=1000 \
    PHP_MEMORY_LIMIT=128M \
    PHP_POST_MAX_SIZE=8M \
    #PHP_SENDMAIL_PATH="/usr/sbin/sendmail -t -i" \
    PHP_SESSION_SAVE_HANDLER=files \
    PHP_SESSION_SAVE_PATH="" \
    PHP_UPLOAD_MAX_FILESIZE=2M \
    PHP_XDEBUG_DEFAULT_ENABLE=0 \
    PHP_XDEBUG_IDEKEY=''\
    PHP_XDEBUG_PROFILER_ENABLE=0 \
    PHP_XDEBUG_REMOTE_AUTOSTART=0 \
    PHP_XDEBUG_REMOTE_CONNECT_BACK=0 \
    PHP_XDEBUG_REMOTE_ENABLE=0 \
    PHP_XDEBUG_REMOTE_HOST=0

RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" \
    && php composer-setup.php --install-dir=/usr/local/bin --filename=composer \
    && php -r "unlink('composer-setup.php');"

CMD ["php-fpm"]

EXPOSE 9000

当我运行docker-compose build我得到以下错误

 Service 'php-fpm' failed to build: The command '/bin/sh -c chmod a+x /usr/local/bin/*.sh' returned a non-zero code: 1

[![在此处输入图片描述][2]][2]

为什么在这种情况下找不到 bash 文件?

chmod: cannot access '/usr/local/bin/*.sh': No such file or directory
ERROR: Service 'php-fpm' failed to build: The command '/bin/sh -c chmod a+x /usr/local/bin/*.sh' returned a non-zero code: 1

如果我运行 RUN ls -l /usr/local/bin 我看不到任何 bash 文件

【问题讨论】:

  • 请向我们展示导致 shell 命令失败的构建运行的输出。还可以考虑在COPY 之后和RUN 命令之前使用lsfind 检查发生了什么。 `RUN yes | 末尾有一个杂散的反斜杠pecl install xdebug `,但这不重要,因为下一行是空的?!
  • 感谢您的反馈。我添加了带有错误消息的屏幕截图
  • 请不要将图像粘贴到文字可以的地方。请将错误消息和日志输出作为文本复制并粘贴到您的问题中。谢谢。
  • 你的 docker 构建上下文在哪里?如果你像docker build . 一样运行docker,这应该会在当前目录中找到*.sh 文件。
  • 我使用 docker-compose 并从那里引用每个容器 build context: ./docker/php-fpm

标签: bash reference docker-compose containers


【解决方案1】:

只需将副本 ./*.sh 更改为:

COPY sendmail.sh /usr/local/bin/
COPY ./php_mail.ini /usr/local/etc/php/conf.d/mail.ini
COPY start_sendmail_mta.sh /usr/local/bin
RUN chmod a+x /usr/local/bin/*.sh

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-01
    • 2013-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-26
    • 1970-01-01
    • 2023-03-13
    相关资源
    最近更新 更多