ฉันกำลังพยายามสร้างคอนเทนเนอร์สแต็กสำหรับแอปพลิเคชันและใช้ .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": รูปแบบการอ้างอิงไม่ถูกต้อง
ฉันไม่สามารถหาสาเหตุที่เป็นไปได้ของข้อผิดพลาดที่เอาแน่เอานอนไม่ได้นี้เพื่อแก้ไข
ฉันพลาดอะไรไปรึเปล่า?