Docker - 无法创建mpm-accept互斥体。

5
我的 Docker 容器一直重新启动,并显示以下错误:
Operation not supported: AH00023: Couldn't create the mpm-accept mutex 

(95)Operation not supported: could not create accept mutex

我尝试了一些在线解决方案,包括 platform: linux/amd64 切换 docker 重启等操作...

这个 解决方法对我没有用。

然而我无法编辑 httpd.conf 文件,这里 提供的解决方法是因为我无法访问 docker 镜像来完成这个操作,因为它一直在重启。

有人知道如何解决这个错误吗?我使用的是 Mac M1

Dockerfile:

FROM 242425.a.a.eu-central-1.amazonaws.com/app-php:7.4

ARG COMPOSER_TOKEN
ENV COMPOSER_TOKEN=${COMPOSER_TOKEN}
ARG GITHUB_OAUTH_TOKEN
ENV GITHUB_OAUTH_TOKEN=${GITHUB_OAUTH_TOKEN}
ARG ENVIRONMENT=""
ENV ENVIRONMENT=${ENVIRONMENT}

RUN apt-get --yes update && apt-get --yes --no-install-recommends install supervisor

RUN if [ "${ENVIRONMENT}" = "local" ]; \
    then pecl install xdebug && docker-php-ext-enable xdebug; \
    fi

RUN mkdir /root/.composer
RUN if [ "${ENVIRONMENT}" != "local" ]; \
    then echo "${COMPOSER_TOKEN}" > /root/.composer/auth.json; \
    fi

# Configure Apache
COPY ./config/aws/apache2/breitling.conf /etc/apache2/sites-enabled

# Move application in the correct folder
COPY . /var/www/html/
COPY ./config/aws/secrets_manager/${ENVIRONMENT}/map.csv /usr/local/etc/secrets-map.csv
COPY ./config/aws/supervisor/messenger-worker.conf /etc/supervisor/conf.d

# Fix permissions
RUN setfacl -dR \
    -m u:"www-data":rwX \
    -m g:"www-data":rwX \
    -m u:$(whoami):rwX \
    -m o::rwX \
    /var/www/html/var

RUN setfacl -R \
    -m u:"www-data":rwX \
    -m g:"www-data":rwX \
    -m u:$(whoami):rwX \
    -m o::rwX \
    /var/www/html/var

RUN rm -rf \
    /var/www/html/var/cache/prod \
    /var/www/html/var/cache/test \
    /var/www/html/var/cache/dev \
    > /dev/null 2>&1

RUN mkdir -p \
    /var/www/html/var/cache/prod \
    /var/www/html/var/cache/test \
    /var/www/html/var/cache/dev \
    > /dev/null 2>&1

# Build application
RUN if [ "${ENVIRONMENT}" != "local" ]; \
    then /var/www/html/bin/app_build.sh; \
    fi

# BAWS-392
RUN if [ "${ENVIRONMENT}" != "local" ]; then rm -rf /root/.composer/cache; fi
RUN if [ "${ENVIRONMENT}" != "local" ]; then find /var/www/html/vendor -type d -name .git -delete; fi

ENTRYPOINT /var/www/html/bin/entrypoint.aws.sh

2
没有看到你的Dockerfile,诊断起来有点困难,但你可以尝试将CMD更改为CMD ["sh", "-c", "tail -f /dev/null"],这样应该可以保持容器运行,以便你能够在终端中访问它。同时,在创建Docker镜像时,你也可以使用以下命令向文件追加"Mutex posixsem": RUN echo "Mutex posixsem" >> /path/to/httpd.conf - Bets
谢谢回复。您可以告诉我如何找到我的Docker httpd.conf文件的路径吗?@Bets - liliget
另外,如果您能解释一下如何执行第一个建议,因为我是在Docker中新手。@Bets - liliget
2
我认为最好您分享您的Dockerfile内容(如果有敏感信息,可以剥离一部分)。根据快速的谷歌搜索,httpd.conf文件应该位于/etc/httpd/conf/httpd.conf,所以您可以在Dockerfile中添加以下内容(在CMD行之前):RUN echo "Mutex posixsem" >> /etc/httpd/conf/httpd.conf,这将修改Docker镜像内的文件。对于第一个建议,您可以替换Dockerfile中现有的CMD行,在两种情况下,您都需要重新构建Docker镜像。 - Bets
对于第二个,我得到了/bin/sh: 1: cannot create /etc/httpd/conf/httpd.conf: Directory nonexistent on docker-build @Bets。 - liliget
显示剩余7条评论
1个回答

20

多亏 @Bets 的帮助,在 Dockerfile 中加入以下内容后,问题得以解决:

RUN echo "Mutex posixsem" >> /etc/apache2/apache2.conf

万岁!很高兴能为您服务! - Bets
这适用于带有 vscode devcontainer 的 FROM --platform=linux/amd64 mcr.microsoft.com/vscode/devcontainers/php:0-${VARIANT} - Andreas Heissenberger

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接