You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用不兼容的Alpine发行版时能否跳过GLIBCXX检查?

问题:Alpine + PHP7.2容器在VS Code Remote Container中启动失败(GLIBCXX错误)
  • 基于php:7.2-fpm-alpine3.12构建的工作区,docker compose up -d可正常部署,但通过VS Code Remote Container打开时触发GLIBCXX相关错误,容器直接关闭
  • 问题关联VS Code官方仓库的check-requirements-linux.sh脚本,与Alpine的musl libc兼容性冲突
  • 已知临时方案:降级VS Code到v1.8.5,但属于临时 workaround,不便长期使用
  • 硬性约束:必须使用Alpine系列镜像(如php:7.2-<ALPINE DISTRO>)
可行解决方案

方案1:覆盖检查脚本(推荐)

在Dockerfile中添加步骤,替换Remote Container会执行的检查脚本,直接返回成功:

# 覆盖VS Code Remote Container的系统检查脚本,跳过GLIBCXX版本校验
RUN mkdir -p /usr/local/bin && \
    echo '#!/bin/sh' > /usr/local/bin/check-requirements-linux.sh && \
    echo 'exit 0' >> /usr/local/bin/check-requirements-linux.sh && \
    chmod +x /usr/local/bin/check-requirements-linux.sh

Remote Container插件会优先读取/usr/local/bin下的脚本,用这个空脚本替代原检查逻辑,直接通过校验。

方案2:安装兼容的libstdc++库

在Dockerfile的apk安装步骤中添加libstdc++包,补充GLIBCXX相关依赖:

# 在apk add --no-cache的列表中添加libstdc++
apk add --update --no-cache \
    autoconf bash g++ coreutils gcc make git openssh-client \
    libressl-dev patch pkgconfig subversion tini \
    gettext-dev bzip2-dev libxslt-dev mongodb-tools msgpack-c unzip zip \
    libstdc++  # 添加这一行

注意:不要将libstdc++放到.build-deps虚拟包中,确保最终镜像保留该依赖。

方案3:通过环境变量跳过检查

在.devcontainer/devcontainer.json中添加环境变量,告知插件跳过系统依赖检查:

{
    "containerEnv": {
        "REMOTE_CONTAINERS_SKIP_REQUIREMENTS_CHECK": "true"
    }
}
修改后的完整Dockerfile(整合方案1)
#USE this Dockerfile if you want to test the image
ARG PHP_VERSION=7.2
ARG PHP_IMAGE=php:${PHP_VERSION}-fpm-alpine3.12
ARG PHP_PHALCON_VERSION=3.4.x
ARG PHP_COMPOSER_VERSION=2.1.8
ARG COMPOSER_IMAGE=composer:${PHP_COMPOSER_VERSION}
ARG AMQP_VERSION=amqp-1.10.2
ARG PHP_XDEBUG_VERSION=xdebug-3.1.0

FROM ${PHP_IMAGE} AS php
ARG AMQP_VERSION
ARG PHP_PHALCON_VERSION
ARG PHP_XDEBUG_VERSION
ENV PHP_ZLIB_DIR=/usr/

# Fix timezone issue
ENV TZ=Europe/Lisbon
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone \
    ; \
    apk upgrade --update-cache --available && \
    apk add --update --no-cache \
    autoconf bash g++ coreutils gcc make git openssh-client \
    libressl-dev patch pkgconfig subversion tini \
    #dep for php ext: gettext
    gettext-dev \
    #dep for php ext: bz2
    bzip2-dev \
    #dep for php ext: xsl + soap
    libxslt-dev \
    #dep for php ext: mongodb
    mongodb-tools \
    #dep for php ext: msgpack
    msgpack-c  \
    #dep for php ext: zip
    unzip zip \
    ; \
    apk add --no-cache --virtual .build-deps \
    #dep for php ext: intl 
    icu-dev \
    ; \
    docker-php-source extract \
    && docker-php-ext-install \
    bcmath \
    bz2 \
    calendar  \
    exif \
    gettext \
    intl \
    pdo_mysql \
    soap \
    sockets \
    xsl \
    zip \
    ; \
    pecl channel-update pecl.php.net \
    && pecl install igbinary \
    && pecl install msgpack \
    && pecl install mongodb-1.10.0 \
    && echo "php_ini = /usr/local/etc/php/php.ini" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \
    && pecl install ${PHP_XDEBUG_VERSION} \
    #dep for php ext: yaml
    && apk add --update --no-cache yaml-dev \
    && pecl install yaml \
    #dep for php ext: memcached
    && apk add --update --no-cache libmemcached-dev zlib-dev libpng-dev \
    && pecl install memcached --with-zlib-dir=$PHP_ZLIB_DIR \
    #dep for php ext: rabbitmq / amqp
    && apk add --update --no-cache rabbitmq-c-dev \
    && printf "\n" | pecl install ${AMQP_VERSION} \
    && printf "\n" | pecl install redis-5.3.2 \
    && docker-php-ext-enable igbinary msgpack mongodb xdebug yaml memcached redis \
    # enabling amqp ext this way avoids coflicts loading dependecies  (sockets)
    && echo "extension=amqp" > /usr/local/etc/php/conf.d/40-amqp.ini \
    && docker-php-source delete \
    && apk del --purge .build-deps \
    && mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini"

## Composer
ARG COMPOSER_IMAGE
FROM ${COMPOSER_IMAGE} AS composer


FROM php AS phalcon
ARG PHP_PHALCON_VERSION
#phalcon
RUN cd ~ && git clone --depth=1 -b ${PHP_PHALCON_VERSION} git://github.com/phalcon/cphalcon.git \
    && cd ~/cphalcon/build \
    && ./install \
    && echo "extension=phalcon.so" > /usr/local/etc/php/conf.d/50-phalcon.ini \
    && rm -rf ~/cphalcon \
    ; \
    # 覆盖VS Code Remote Container的系统检查脚本,跳过GLIBCXX版本校验
    mkdir -p /usr/local/bin && \
    echo '#!/bin/sh' > /usr/local/bin/check-requirements-linux.sh && \
    echo 'exit 0' >> /usr/local/bin/check-requirements-linux.sh && \
    chmod +x /usr/local/bin/check-requirements-linux.sh \
    ; \
    # clean up
    apk del autoconf bash check-dev cyrus-sasl-dev g++ gcc \
    imagemagick-dev libc-dev libssh2-dev libsodium-dev \
    m4 make musl-dev openssl-dev perl pkgconfig \
    tzdata \
    && rm -rf /var/cache/apk/* && rm -rf /tmp/*
# RUN php -r "echo Phalcon\Version::get();"
COPY --from=composer /usr/bin/composer /usr/bin/composer
WORKDIR /app

内容的提问来源于stack exchange,提问作者sirvictahh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 07:48:11