Score:0

การอ่านค่าพารามิเตอร์ที่ไม่แน่นอนของนักเทียบท่า

ธง co

ฉันกำลังพยายามสร้างคอนเทนเนอร์สแต็กสำหรับแอปพลิเคชันและใช้ .env เพื่อส่งผ่านพารามิเตอร์ต่าง ๆ ที่จะใช้ในระหว่างกระบวนการสร้าง

การกำหนดค่าสแต็ก:

    นักเทียบท่าเวอร์ชัน 20.10.14 สร้าง a224086d
    นักเทียบท่าเขียนเวอร์ชัน v2.5.1
    Docker Desktop รุ่น 4.8.2 (79419)
.
âââ นักเทียบท่า
â âââ php
â âââ แคดดี้
âââ ไฟล์นักเทียบท่า
âââ นักเทียบท่า-compose.yml
âââ .env
âââ README.md

เดอะ .env เนื้อหา:

###> ซิมโฟนี่/เฟรมเวิร์ค-บันเดิล ###
APP_NAME=แอป
APP_ENV=ผู้พัฒนา
APP_SECRET=05425c77d4ec3dc1c301c4547ca4ac89
###< symfony/เฟรมเวิร์กมัด ###

###> พารามิเตอร์การเขียนนักเทียบท่า ###
SERVER_NAME=${APP_NAME}.local
PHP_VERSION=7.4
COMPOSER_VERSION=2.2.10
CADDY_VERSION=2
HTTP_PROXY=''
APCU_VERSION=5.1
PCOV_VERSION=1.0
XDEBUG_VERSION=3.1.2

MARIABDB_VERSION=10.6
MARIADB_DATABASE=${APP_NAME}_data
MARIADB_ROOT_PASSWORD=ราก
MARIADB_USER=ผู้ใช้
MARIADB_USER_PASSWORD=ผู้ใช้
###< พารามิเตอร์นักเทียบท่านักแต่งเพลง ###

เดอะ นักเทียบท่า-compose.yaml เนื้อหาไฟล์:

รุ่น: "3.7"
บริการ:
  ฐานข้อมูล:
    container_name: ${APP_NAME:-app}_db
    รูปภาพ: mariadb:${MARIADB_VERSION:-10.6}
    รีสตาร์ท: เว้นแต่จะหยุด
    พอร์ต:
      - "3306:3306"
    ปริมาณ:
      - db_socket:/var/run/mysqld/
    สิ่งแวดล้อม:
      MARIADB_INITDB_SKIP_TZINFO: จริง
      TZ: ยุโรป/ปารีส
      MARIADB_ROOT_PASSWORD: ${MARIADB_ROOT_PASSWORD:-รูท}
      MARIADB_DATABASE: ${MARIADB_DATABASE}
      MARIADB_USER: ${MARIADB_USER:-ผู้ใช้}
      MARIADB_PASSWORD: ${MARIADB_PASSWORD:-user}

  php:
    container_name: ${APP_NAME:-app}_php
    รีสตาร์ท: เว้นแต่จะหยุด
    ขึ้นอยู่กับ:
      - ฐานข้อมูล
    สร้าง:
      บริบท: .
      เป้าหมาย: php_dev
      หาเรื่อง:
        PHP_VERSION: ${PHP_VERSION:-7.4}
        COMPOSER_VERSION: ${COMPOSER_VERSION:-2.2.10}
        HTTP_PROXY: ${HTTP_PROXY}
        XDEBUG_VERSION: ${XDEBUG_VERSION:-5.1.2}
    # https://github.com/compose-spec/compose-spec/blob/master/spec.md#healthcheck
    ตรวจสุขภาพ:
      ช่วงเวลา: 10 วินาที
      หมดเวลา: 3 วินาที
      ลองใหม่: 3
      start_period: 30 วินาที
    ปริมาณ:
      - php_socket:/var/run/php.ini
      - ./app:/srv/app/
    สิ่งแวดล้อม:
      # เรียกใช้ "ผู้แต่งต้องการ symfony/orm-pack" เพื่อติดตั้งและกำหนดค่า Doctrine ORM
      DATABASE_URL: mysql://${MARIA_USER:-symfony}:${MARIA_USER_PASSWORD:-ChangeMe}@db:3306/${MARIA_DB:-app}?unix_socket=/var/run/mysqld/&serverVersion=${MARIA_VERSION:- 10.6}
      # ดู https://docs.docker.com/docker-for-mac/networking/#i-want-to-connect-from-a-container-to-a-service-on-the-host
      # ดู https://github.com/docker/for-linux/issues/264
      # `client_host` ด้านล่างอาจถูกแทนที่ด้วย `discover_client_host=yes`
      # เพิ่ม `start_with_request=yes` เพื่อเริ่มเซสชันการแก้ไขข้อบกพร่องในแต่ละคำขอ
      XDEBUG_CONFIG: >-
        client_host=host.docker.internal
      XDEBUG_MODE: ดีบัก
      # สิ่งนี้ควรสอดคล้องกับเซิร์ฟเวอร์ที่ประกาศใน PHPStorm `Preferences | ภาษาและเฟรมเวิร์ก | PHP | เซิร์ฟเวอร์ `
      # จากนั้น PHPStorm จะใช้การแมปพาธที่เกี่ยวข้อง
      PHP_IDE_CONFIG: serverName=symfony
      # extra_hosts:
      # # ตรวจสอบให้แน่ใจว่า host.docker.internal ถูกกำหนดอย่างถูกต้องบน Linux
      # - host.docker.internal: โฮสต์เกตเวย์
      # เรียกใช้ "composer need symfony/mercure-bundle" เพื่อติดตั้งและกำหนดค่าการรวม Mercure
      # https://symfony.com/doc/current/mercure.html
      MERCURE_URL: ${CADDY_MERCURE_URL:-http://caddy/.well-known/mercure}
      MERCURE_PUBLIC_URL: https://${SERVER_NAME:-localhost}/.well-known/mercure
      MERCURE_JWT_SECRET: ${CADDY_MERCURE_JWT_SECRET:-!ChangeMe!}


  แคดดี้:
    สร้าง:
      บริบท: .
      เป้าหมาย: app_caddy
      หาเรื่อง:
        CADDY_VERSION: ${CADDY_VERSION:-2}
    ขึ้นอยู่กับ:
      - php
    รีสตาร์ท: เว้นแต่จะหยุด
    ปริมาณ:
      - php_socket:/var/run/php.ini
      -caddy_data:/ข้อมูล
      - caddy_config:/config
    พอร์ต:
      # HTTP
      - เป้าหมาย: 80
        เผยแพร่: ${HTTP_PORT:-80}
        โปรโตคอล: tcp
      # HTTPS
      - เป้าหมาย: 443
        เผยแพร่: ${HTTPS_PORT:-443}
        โปรโตคอล: tcp
      #HTTP/3
      - เป้าหมาย: 443
        เผยแพร่: ${HTTP3_PORT:-443}
        โปรโตคอล: udp
    สิ่งแวดล้อม:
      SERVER_NAME: ${SERVER_NAME:-localhost, แคดดี้:80}
      MERCURE_PUBLISHER_JWT_KEY: ${CADDY_MERCURE_JWT_SECRET:-!ChangeMe!}
      MERCURE_SUBSCRIBER_JWT_KEY: ${CADDY_MERCURE_JWT_SECRET:-!ChangeMe!}


ปริมาณ:
  php_socket:
  db_socket:
  แคดดี้_ข้อมูล:
  แคดดี้_config:

เดอะ ไฟล์นักเทียบท่า เนื้อหา:

ARG PHP_VERSION
ARG CADDY_VERSION
ARG COMPOSER_VERSION
ARG HTTP_PROXY
ARGAPCU_VERSION
ARG PCOV_VERSION
ARG XDEBUG_VERSION

# เครื่องชาร์จ un https://stackoverflow.com/a/65044947/1374947
จากผู้แต่ง:${COMPOSER_VERSION} AS ผู้แต่ง_local
จาก php:${PHP_VERSION}-fpm-alpine AS php
LABEL "ผู้ดูแล" = "DEIL"
LABEL "เวอร์ชัน"="1.0"
LABEL "description"="ภาพฐานสำหรับโปรเจ็กต์ symfony"

ARG DEBIAN_FRONTEND=ไม่โต้ตอบ

อัปเดต RUN apk; \
    อัปเกรด APK; \
    apk เพิ่ม --no-แคช \
        acl \
        ทุบตี \
        เอฟซีจิ \
        ไฟล์ \
        รับข้อความ \
        gnu-libiconv \
        นาโน \
    ;
# ติดตั้ง gnu-libiconv และตั้งค่า LD_PRELOAD env เพื่อให้ iconv ทำงานได้อย่างสมบูรณ์บนอิมเมจ Alpine
# ดู https://github.com/docker-library/php/issues/240#issuecomment-763112749
ENV LD_PRELOAD /usr/lib/preloadable_libiconv.so
ชุด RUN -eux; \
    apk เพิ่ม --no-cache --virtual .build-deps \
        $PHPIZE_DEPS \
        icu-dev \
        libzip-dev \
        zlib-dev \
        ไคลเอ็นต์ mysql \
        ldb-dev \
        libldap \
        openldap-dev \
        openldap-ไคลเอ็นต์ \
        freetype-dev \
        libpng-dev \
        jpeg-dev \
        libjpeg-เทอร์โบ-dev \
    ; \
    \
    นักเทียบท่า-php-ext-กำหนดค่า zip; \
       นักเทียบท่า-php-ext-configure ldap; \
    นักเทียบท่า-php-ext-install -j$(nproc) \
        อินเตอร์เนชั่นแนล \
        ลดาพ \
        ซิป \
        pdo_mysql \
        mbstring \
        gd \
    ; \
    ลูกแพร์ config-set http_proxy $HTTP_PROXY; \
    เฉพาะการติดตั้ง \
    apcu-${APCU_VERSION} \
    ; \
    \
    runDeps="$( \
        scanelf --needed --nobanner --format '%n#p' --recursive /usr/local/lib/php/extensions \
            | tr ',' '\n' \
            | จัดเรียง -u \
            | awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { ถัดไป } { พิมพ์ "ดังนั้น:" $1 }' \
    )"; \
    apk เพิ่ม --no-cache --virtual .phpexts-rundeps $runDeps; \
    \
    apk เดล .build-deps; \


สำเนา ./docker/php/docker-healthcheck.sh /usr/local/bin/docker-healthcheck
RUN chmod +x /usr/local/bin/docker-healthcheck
HEALTHCHECK --interval=10s --timeout=3s --retries=3 CMD ["docker-healthcheck"]
# การกำหนดค่าที่เหมาะสมที่สุดสำหรับ PHP-FPM สำหรับการพัฒนา
RUN ln -s $PHP_INI_DIR/php.ini-การพัฒนา $PHP_INI_DIR/php.ini
คัดลอกนักเทียบท่า/php/conf.d/symfony.dev.ini $PHP_INI_DIR/conf.d/symfony.ini

คัดลอกนักเทียบท่า/php/php-fpm.d/zz-docker.conf /usr/local/etc/php-fpm.d/zz-docker.conf

ปริมาณ /var/run/php.ini

สำเนา --from=composer_local /usr/bin/composer /usr/bin/composer
# https://getcomposer.org/doc/03-cli.md#composer-allow-superuser
ENV COMPOSER_ALLOW_SUPERUSER=1
ENV PATH="${PATH}:/root/.composer/vendor/bin"

เวิร์คดีอาร์ /srv/app
ชุด RUN -eux; \
    mkdir -p var/cache var/log; \
    ls -halt /srv/app; \
    mkdir -p var/cache var/log; \
    chmod +x bin/console; ซิงค์

CMD ["php-fpm"]

# Dockerfile เพื่อรวม xdebug
# https://github.com/dunglas/symfony-docker/blob/main/docs/xdebug.md
จาก php เป็น php_dev
ชุด RUN -eux; \
    apk เพิ่ม --no-cache --virtual .build-deps $PHPIZE_DEPS; \
    เฉพาะติดตั้ง xdebug-$XDEBUG_VERSION; \
    นักเทียบท่า-php-ext-enable xdebug; \
    apk เดล .build-deps ; \

จาก php เป็น php_test
# Ajouter la conf สำหรับ PCOV - Code Coverage
สำเนา ./docker/php-test/pcov.ini /
ชุด RUN -eux; \
    apk เพิ่ม --no-cache --virtual .build-deps $PHPIZE_DEPS; \
    pecl ติดตั้ง pcov-${PCOV_VERSION}; \
    pecl ล้างแคช; \
    นักเทียบท่า-php-ext-enable pcov; \
    แมว /pcov.ini >> /usr/local/etc/php/conf.d/docker-php-ext-pcov.ini; \
    apk เดล .build-deps;

เวิร์คดีอาร์ /srv/app
## คัดลอกแหล่งที่มา dans le conteneur.
## เครื่องถ่ายเอกสาร le ผู้แต่ง json et .lock et installer les dépendances pendant le build.
คัดลอก --chown=www-data:www-data .

จากแคดดี้:${CADDY_VERSION}-builder-alpine AS caddy_builder
RUN xcaddy สร้าง \
    --ด้วย github.com/dunglas/mercure \
    --ด้วย github.com/dunglas/mercure/caddy \
    --ด้วย github.com/dunglas/vulcain \
    --ด้วย github.com/dunglas/vulcain/caddy ;

จากแคดดี้:${CADDY_VERSION} เป็น app_caddy
เวิร์คดีอาร์ /srv/app

สำเนา --from=dunglas/mercure:v0.11 /srv/public /srv/mercure-assets/
สำเนา --from=caddy_builder /usr/bin/caddy /usr/bin/caddy
สำเนา --from=php /srv/app/public สาธารณะ/
สำเนา ./docker/caddy/Caddyfile /etc/caddy/Caddyfile

ฉันไม่สามารถสร้างอิมเมจและคอนเทนเนอร์ที่เกี่ยวข้องได้ บิลด์ส่งคืนข้อผิดพลาดที่ผิดปกติต่อไปนี้ ทั้งเกี่ยวกับรูปแบบของเวอร์ชันที่กล่าวถึงสำหรับอิมเมจแคดดี้หรืออิมเมจ php :

λ นักเทียบท่า-เขียน build --pull --no-cache
[+] อาคาร 0.2 วินาที (6/6) เสร็จสิ้น
 => [โครงกระดูก-ci_caddy ภายใน] นิยามการสร้างโหลดจาก Dockerfile 0.0s 
 => => กำลังถ่ายโอนไฟล์นักเทียบท่า: 32B 0.0 วินาที 
 => [โครงกระดูก-ci_php ภายใน] นิยามการสร้างโหลดจาก Dockerfile 0.0s 
 => => กำลังถ่ายโอนไฟล์นักเทียบท่า: 32B 0.0 วินาที 
 => [โครงกระดูก-ci_caddy ภายใน] โหลด .dockerignore 0.0 วินาที 
 => => บริบทการถ่ายโอน: 2B 0.0s 
 => [โครงกระดูก-ci_php ภายใน] โหลด .dockerignore 0.0 วินาที 
 => => บริบทการถ่ายโอน: 2B 0.0s 
 => ยกเลิก [โครงกระดูก-ci_caddy ภายใน] โหลดข้อมูลเมตาสำหรับ docker.io/library/caddy:2-builder-alpine 0.0s 
 => ยกเลิก [โครงกระดูก-ci_caddy ภายใน] โหลดข้อมูลเมตาสำหรับ docker.io/library/caddy:2 0.0 วินาที 
ล้มเหลวในการแก้ไข: ข้อผิดพลาด rpc: code = Unknown desc = ล้มเหลวในการแก้ไขด้วย frontend dockerfile.v0: ล้มเหลวในการสร้างคำจำกัดความ LLB: ล้มเหลวในการแยกวิเคราะห์ชื่อสเตจ "php:-fpm-alpine": รูปแบบการอ้างอิงไม่ถูกต้อง

ฉันไม่สามารถหาสาเหตุที่เป็นไปได้ของข้อผิดพลาดที่เอาแน่เอานอนไม่ได้นี้เพื่อแก้ไข ฉันพลาดอะไรไปรึเปล่า?

vn flag
https://docs.docker.com/engine/reference/builder/#scope "คำสั่ง ARG อยู่นอกขอบเขตที่ส่วนท้ายของขั้นตอนการสร้างซึ่งกำหนดไว้ หากต้องการใช้การหาเรื่องในหลายขั้นตอน แต่ละขั้นตอนต้องมีคำสั่ง ARG"
Raymond avatar
co flag
ขอบคุณ ฉันกำลังตรวจสอบ dockerfile ตามนั้น

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา