首页 > 解决方案 > Nginx 和 php 构建的 Docker 执行程序失败

问题描述

嗨,我正在尝试在我的新系统上设置 docker,并尝试使用 docker 使 Laravel 项目工作。在这种情况下,我正在尝试使用以下 Dockerfile 构建图像,该文件将安装 Nginx 和 php.ini。我正在使用 M1 苹果硅 MacBook,在尝试构建它时遇到了一些问题。

我的 Dockerfile

FROM ubuntu:16.04


RUN apt-get update \
    && apt-get install -y locales \
    && locale-gen en_US.UTF-8

ENV LANG en_US.UTF-8
ENV LANGUAGE en_US:en
ENV LC_ALL en_US.UTF-8

RUN apt-get update \
    && apt-get install -y nginx curl zip unzip git software-properties-common supervisor \
    && add-apt-repository -y ppa:ondrej/php \
    && apt-get update \
    && apt-get install -y php7.0-fpm php7.0-cli php7.0-mcrypt php7.0-gd php7.0-mysql \
       php7.0-pgsql php7.0-imap php-memcached php7.0-mbstring php7.0-xml php7.0-curl \
       php7.0-sqlite3 php7.0-xdebug \
    && php -r "readfile('http://getcomposer.org/installer');" | php -- --install-dir=/usr/bin/ --filename=composer \
    && mkdir /run/php \
    && apt-get remove -y --purge software-properties-common \
    && apt-get -y autoremove \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* \
    && echo "daemon off;" >> /etc/nginx/nginx.conf

RUN ln -sf /dev/stdout /var/log/nginx/access.log \
    && ln -sf /dev/stderr /var/log/nginx/error.log

COPY default /etc/nginx/sites-available/default

COPY php-fpm.conf /etc/php/7.0/fpm/php-fpm.conf

EXPOSE 80

COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf

CMD ["/usr/bin/supervisord"]

尝试构建它时出现以下错误。

executor failed running [/bin/sh -c apt-get update     && apt-get install -y nginx curl zip unzip git software-properties-common supervisor     && add-apt-repository -y ppa:ondrej/php     && apt-get update     && apt-get install -y php7.0-fpm php7.0-cli php7.0-mcrypt php7.0-gd php7.0-mysql        php7.0-pgsql php7.0-imap php-memcached php7.0-mbstring php7.0-xml php7.0-curl        php7.0-sqlite3 php7.0-xdebug     && php -r "readfile('http://getcomposer.org/installer');" | php -- --install-dir=/usr/bin/ --filename=composer     && mkdir /run/php     && apt-get remove -y --purge software-properties-common     && apt-get -y autoremove     && apt-get clean     && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*     && echo "daemon off;" >> /etc/nginx/nginx.conf]: exit code: 100

标签: phpdockerubuntunginx

解决方案


所以要解决这个问题,我必须安装可用的 php 扩展。所以在这种情况下,我尝试安装 php7.4 的扩展,下面是 docker-compose 文件

version: '2'
services:
  app:
    build:
      context: ./docker/app
      dockerfile: Dockerfile
    image: ebdaa-delivery.test.com/app
    volumes:
     - .:/var/www/html
    ports:
     - "81:80"
    networks:
     - sdnet
  node:
    build:
      context: ./docker/node
      dockerfile: Dockerfile
    image: ebdaa-delivery.test.com/node
    volumes:
     - .:/var/www/html
    networks:
     - sdnet
  mysql:
    image: mariadb:10.5
    ports:
     - "3307:3306"
    environment:
      MYSQL_ROOT_PASSWORD: "root"
      MYSQL_DATABASE: "ecom"
      MYSQL_USER: "root"
      MYSQL_PASSWORD: "root"
    volumes:
     - mysqldata:/var/lib/mysql
    networks:
     - sdnet
  redis:
    image: redis:alpine
    volumes:
     - redisdata:/data
    networks:
     - sdnet
networks:
  sdnet:
    driver: "bridge"
volumes:
  mysqldata:
    driver: "local"
  redisdata:
    driver: "local"

推荐阅读