使用 docker-compose up 构建 PHP 存在 sudo 问题

如何解决使用 docker-compose up 构建 PHP 存在 sudo 问题

当我在 Drupal 站点上运行 docker-compose up 时,我得到以下输出

 => [internal] load build deFinition from Dockerfile                                                                                                                                           0.0s
 => => transferring dockerfile: 37B                                                                                                                                                            0.0s
 => [internal] load .dockerignore                                                                                                                                                              0.0s
 => => transferring context: 2B                                                                                                                                                                0.0s
 => [internal] load Metadata for docker.io/wodby/drupal-PHP:7.3                                                                                                                                1.3s
 => CACHED [1/5] FROM docker.io/wodby/drupal-PHP:7.3@sha256:05bc175d426b59eea40fd855125b8c86836081e76493f683d8ad40da8f2008e3                                                                   0.0s
 => ERROR [2/5] RUN sudo apk add --no-cache   autoconf   bash   build-base   openssl   libssh2-dev                                                                                             0.3s
------
 > [2/5] RUN sudo apk add --no-cache   autoconf   bash   build-base   openssl   libssh2-dev:
#4 0.240
#4 0.240 We trust you have received the usual lecture from the local System
#4 0.240 Administrator. It usually boils down to these three things:
#4 0.240
#4 0.240     #1) Respect the privacy of others.
#4 0.240     #2) Think before you type.
#4 0.240     #3) With great power comes great responsibility.
#4 0.240
#4 0.240 sudo: a terminal is required to read the password; either use the -S option to read from standard input or configure an askpass helper
#4 0.240 sudo: a password is required
------
executor Failed running [/bin/sh -c sudo apk add --no-cache   autoconf   bash   build-base   openssl   libssh2-dev]: exit code: 1
ERROR: Service 'PHP' Failed to build

我一直在寻找,但找不到任何我理解的可以解决它的方法

这是 docker-compose.yml:

version: "2"

services:
  mariadb:
    image: wodby/mariadb:10.1-2.3.3
    environment:
      MysqL_ROOT_PASSWORD: password
      MysqL_DATABASE: drupal
      MysqL_USER: drupal
      MysqL_PASSWORD: drupal
    ports:
      - "3307:3306"
    volumes:
      #      - ./mariadb-init:/docker-entrypoint-initdb.d # Place init .sql file(s) here.
      - ./.persist/MysqL:/var/lib/MysqL:cached # I want to manage volumes manually.
    labels:
      - "traefik.backend=mariadb"
      - "traefik.port=3306"
      - "traefik.frontend.rule=Host:localhost"

  PHP:
    # 2. Images without Drupal – wodby/drupal-PHP:[PHP_VERSION]-[STABILITY_TAG].
    #    image: wodby/drupal-PHP:7.1-2.4.3
    #    image: wodby/drupal-PHP:7.0-2.1.0
    #    image: wodby/drupal-PHP:5.6-2.1.0
    #    image: wodby/drupal-PHP:5.3-2.1.0
    build: ./build/PHP
    environment:
      DOCKER_LOCAL: 1
      PHP_SENDMAIL_PATH: /usr/sbin/sendmail -t -i -S mailhog:1025
      DB_HOST: mariadb
      DB_USER: drupal
      DB_PASSWORD: drupal
      DB_NAME: drupal
      DB_DRIVER: MysqL
      PHP_XDEBUG: 1
      PHP_XDEBUG_DEFAULT_ENABLE: 1
      PHP_XDEBUG_REMOTE_CONNECT_BACK: 0 # This is needed to respect remote.host setting bellow
      PHP_XDEBUG_REMOTE_HOST: "10.254.254.254" # You will also need to 'sudo ifconfig lo0 alias 10.254.254.254'
      PHP_IDE_CONfig: "serverName=localhost" # Needed for xdebug for drush commands.
      PHP_XDEBUG_REMOTE_AUTOSTART: 0
    volumes:
      - ./:/var/www/html
      - ./.persist/public:/var/www/html/docroot/sites/default/files
      - ./.persist/private:/private

  Nginx:
    # wodby/drupal-Nginx:[DRUPAL_VERSION]-[Nginx_VERSION]-[STABILITY_TAG].
    image: wodby/drupal-Nginx:8-1.13-2.4.2
    #    image: wodby/drupal-Nginx:7-1.10-2.1.0
    #    image: wodby/drupal-Nginx:6-1.10-2.1.0
    depends_on:
      - PHP
    environment:
      Nginx_STATIC_CONTENT_OPEN_FILE_CACHE: "off"
      Nginx_ERROR_LOG_LEVEL: debug
      Nginx_BACKEND_HOST: PHP
      Nginx_SERVER_ROOT: /var/www/html/docroot
    volumes:
      - ./:/var/www/html
      - ./.persist/public:/var/www/html/docroot/sites/default/files
    labels:
      - "traefik.backend=Nginx"
      - "traefik.port=80"
      - 'traefik.frontend.rule=HostRegexp:localhost,{subdomain:[a-z0-9-\\.]+}.localhost,{subdomain:[a-z0-9]+}.ngrok.io'

  #  varnish:
  #    image: wodby/drupal-varnish:4.1-2.1.0
  #    depends_on:
  #      - Nginx
  #    environment:
  #      VARNISH_SECRET: secret
  #      VARNISH_BACKEND_HOST: Nginx
  #      VARNISH_BACKEND_PORT: 80
  #    labels:
  #      - 'traefik.backend=varnish'
  #      - 'traefik.port=6081'
  #      - 'traefik.frontend.rule=Host:varnish.localhost'

  redis:
    image: wodby/redis:3.2-2.1.0

  #  pma:
  #    image: PHPmyadmin/PHPmyadmin
  #    environment:
  #      PMA_HOST: mariadb
  #      PMA_USER: drupal
  #      PMA_PASSWORD: drupal
  #      PHP_UPLOAD_MAX_FILESIZE: 1G
  #      PHP_MAX_INPUT_VARS: 1G
  #    labels:
  #      - 'traefik.backend=pma'
  #      - 'traefik.port=80'
  #      - 'traefik.frontend.rule=Host:pma.localhost'

  solr:
    ## wodby/drupal-solr:[DRUPAL_VERSION]-[SOLR_VERSION]-[STABILITY_TAG].
    image: wodby/drupal-solr:8-6.4-2.0.0
    ##    image: wodby/drupal-solr:8-6.3-2.0.0
    #    image: wodby/drupal-solr:8-5.5-2.0.0
    ##    image: wodby/drupal-solr:7-6.4-2.0.0
    ##    image: wodby/drupal-solr:7-6.3-2.0.0
    ##    image: wodby/drupal-solr:7-5.5-2.0.0
    environment:
      SOLR_HEAP: 1024m
    ports:
      - "8983:8983"
    volumes:
      - ./.persist/solr:/opt/solr/server/solr/core1:delegated
    labels:
      - "traefik.backend=solr"
      - "traefik.port=8983"
      - "traefik.frontend.rule=Host:solr.local"

  mailhog:
    image: mailhog/mailhog
    labels:
      - "traefik.backend=mailhog"
      - "traefik.port=8025"
      - "traefik.frontend.rule=Host:mailhog.localhost"

  #  node:
  #    image: node:7-alpine
  #    working_dir: /app
  #    labels:
  #      - 'traefik.backend=node'
  #      - 'traefik.port=3000'
  #      - 'traefik.frontend.rule=Host:front.localhost'
  #    expose:
  #      - "3000"
  #    volumes:
  #      - ./path/to/your/single-page-app:/app
  #    command: sh -c 'npm install && npm run start'

  #  memcached:
  #    image: wodby/memcached:1.4-2.0.0

  traefik:
    image: traefik:1.7
    command: -c /dev/null --web --docker --logLevel=INFO --defaultEntryPoints='https,http' --entryPoints='Name:https Address::443 TLS:/certs/local.crt,/certs/local.key' --entryPoints='Name:http Address::80'
    ports:
      - "80:80"
      - "443:443"
    #      - '8080:8080' # Dashboard
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./.persist/certs:/certs

我使用的是 MacOS Big Sur。

SO 要求我提供更多详细信息,因为我的问题主要是代码,但我不确定还要添加什么。我看过一些博客文章和 SO 答案,其中有一行解决方案,但没有关于将它放在哪里的信息,所以我有点不知所措,因为我不太了解这个问题。

解决方法

我对你的 docker compose 有两个建议:

  • 切勿将 root 用户用于您的 docker 映像(安全级别),因此如果您需要修复权限,您可以定义一个新用户并授予一些权限会更好。
  • 您的 docker-compose 版本是 2,但当前版本是 3,因此不推荐使用第二个版本,您可以查看版本 3 提供的许多功能。

如果您想要一个可与 docker compose 版本 3 一起使用的 Drupal 应用程序,请查看此链接:drupal-docker-compose-3

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?