php - 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
解决方案
所以要解决这个问题,我必须安装可用的 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"
推荐阅读
- bash - 获取 gcc 版本号并与 bash 进行比较
- python - python日期时间范围
- swift - 以编程方式创建的 ScrollView 不起作用
- python - 如何在opencv中将视频分辨率更改为1440p
- android - 忽略 editorconfig 中特定文件的规则
- salesforce - 如何解决 MetadataAPI 在将记录类型设置为查找字段值时给出“System.CalloutException:IO 异常:读取超时”错误
- python - 删除操作发现不存在的关系
- java - 获取标头属性的字节流 IBM MQ
- vue.js - 如何在 nuxt SSR 中生成 txt & xml 文件?
- vaadin - 类型网格没有类型参数