首页 > 解决方案 > 使用 circleci/php:7.3-cli-node-browsers 构建 docker 镜像

问题描述

我正在尝试在 docker 中构建一个图像,但在它编译后,我执行 docker-compose up 并退出。

我正在使用的 docker 文件包含以下说明:

FROM circleci/php:7.3-cli-node-browsers 

USER root

WORKDIR /var/www/html

RUN apt-get update && apt-get install -y \
        libpng-dev \
        zlib1g-dev \
        zip \
        curl \
    && docker-php-ext-install gd \
    && apt-get install -y zip \
    && apt-get install -y unzip \
    && apt-get install -y git \  
    && apt install -y libsqlite3-dev zlib1g-dev \ 
    && docker-php-ext-install bcmath && docker-php-ext-enable bcmath \
    && docker-php-ext-install pcntl \
    && apt-get install -y --no-install-recommends libmagickwand-dev \
    && docker-php-ext-install exif \
    && pecl install imagick \
    && docker-php-ext-enable imagick

RUN pecl install redis && docker-php-ext-enable redis

COPY .docker/vhost.conf /etc/apache2/sites-available/000-default.conf

RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

WORKDIR /var/www/html
COPY / /var/www/html

RUN composer self-update
RUN composer install -n --prefer-dist

RUN npm install

RUN npm run test 

RUN chmod -R 777 /var/www/html
RUN chmod -R o+w /var/www/html/storage

COPY docker-entrypoint.sh /usr/local/bin/
RUN chmod +x /usr/local/bin/docker-entrypoint.sh
RUN ln -s /usr/local/bin/docker-entrypoint.sh / # backwards compat
ENTRYPOINT ["docker-entrypoint.sh"]

这是一个 laravel 项目,带有节点和 Redis。任何想法为什么它不起作用?

提前感谢您的帮助。

标签: phpnode.jsdockerdocker-compose

解决方案


你的入口点终于调用apache了,但你甚至没有在你的 docker 镜像中安装 apache。

因此,您需要执行以下操作:

  • 将 apache2 安装在Dockerfile

    RUN apt-get install -y apache2
    
  • 正确启动 apache2 docker-entrypoint.sh

    echo "--> Starting app"
    . /etc/apache2/envvars
    mkdir -p /var/run/apache2
    exec apache2 -D FOREGROUND
    

推荐阅读