docker-compose.yml
version: "3.4"
services:
php:
build:
context: .
target: symfony_php
args:
SYMFONY_VERSION: ${SYMFONY_VERSION:-}
SKELETON: ${SKELETON:-symfony/skeleton}
STABILITY: ${STABILITY:-stable}
restart: unless-stopped
volumes:
- php_socket:/var/run/php
healthcheck:
interval: 10s
timeout: 3s
retries: 3
start_period: 30s
environment:
# Run "composer require symfony/orm-pack" to install and configure Doctrine ORM
DATABASE_URL: mysql://${MYSQL_USER:-root}:${MYSQL_PASSWORD:-password}@gk_app:3567/${MYSQL_DB:-gk_app}?serverVersion=13&charset=utf8
# Run "composer require symfony/mercure-bundle" to install and configure the Mercure integration
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!}
caddy:
build:
context: .
target: symfony_caddy
depends_on:
- php
environment:
SERVER_NAME: ${SERVER_NAME:-localhost, caddy:80}
MERCURE_PUBLISHER_JWT_KEY: ${CADDY_MERCURE_JWT_SECRET:-!ChangeMe!}
MERCURE_SUBSCRIBER_JWT_KEY: ${CADDY_MERCURE_JWT_SECRET:-!ChangeMe!}
restart: unless-stopped
volumes:
- php_socket:/var/run/php
- caddy_data:/data
- caddy_config:/config
ports:
# HTTP
- target: 80
published: ${HTTP_PORT:-80}
protocol: tcp
# HTTPS
- target: 443
published: ${HTTPS_PORT:-443}
protocol: tcp
# HTTP/3
- target: 443
published: ${HTTP3_PORT:-443}
protocol: udp
# Mercure is installed as a Caddy module, prevent the Flex recipe from installing another service
###> symfony/mercure-bundle ###
###< symfony/mercure-bundle ###
###> doctrine/doctrine-bundle ###
database:
image: mysql:8.0
environment:
MYSQL_DB: ${MYSQL_DB:-gk_app}
# You should definitely change the password in production
MYSQL_PASSWORD: ${MYSQL_PASSWORD:-password}
MYSQL_ALLOW_EMPTY_PASSWORD: "true"
volumes:
- db-data:/var/lib/mysql
# You may use a bind-mounted host directory instead, so that it is harder to accidentally remove the volume and lose all your data!
# - ./docker/db/data:/var/lib/postgresql/data:rw
###< doctrine/doctrine-bundle ###
volumes:
php_socket:
caddy_data:
caddy_config:
###> symfony/mercure-bundle ###
###< symfony/mercure-bundle ###
###> doctrine/doctrine-bundle ###
db-data:
###< doctrine/doctrine-bundle ###
docker-compose.override.yml
version: "3.4"
# Development environment override
services:
php:
volumes:
# The "cached" option has no effect on Linux but improves performance on Mac
- ./:/srv/app:rw,cached
- ./docker/php/conf.d/symfony.dev.ini:/usr/local/etc/php/conf.d/symfony.ini
# If you develop on Mac you can remove the var/ directory from the bind-mount
# for better performance by enabling the next line
- ./var/storage:/srv/app/var/storage:rw
environment:
APP_ENV: dev
caddy:
volumes:
- ./docker/caddy/Caddyfile:/etc/caddy/Caddyfile:ro
- ./public:/srv/app/public:ro
###> symfony/mercure-bundle ###
###< symfony/mercure-bundle ###
###> doctrine/doctrine-bundle ###
database:
ports:
- "3567:3306"
###< doctrine/doctrine-bundle ###
###> blackfireio/blackfire-symfony-meta ###
blackfire:
image: blackfire/blackfire:2
# uncomment to store Blackfire credentials in a local .env.local file
#env_file: .env.local
environment:
BLACKFIRE_LOG_LEVEL: 4
ports: [8307]
###< blackfireio/blackfire-symfony-meta ###
###> symfony/mailer ###
mailer:
image: schickling/mailcatcher
ports: [1025, 1080]
###< symfony/mailer ###
我跑步:-
HTTP_PORT=8080 HTTPS_PORT=8443 SERVER_NAME=foo.localhost docker-compose up
并得到上面的错误,并倒数到零。容器/服务无法启动?
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
我尝试过
DATABASE_URL: mysql://${MYSQL_USER:-root}:${MYSQL_PASSWORD:-password}@gk_app:3567/${MYSQL_DB:-gk_app}?serverVersion=13&charset=utf8
使用不同的端口:3567
和 3306
但没有成功?
有人精通 https://github.com/dunglas/symfony-docker/blob/main/docker-compose.yml 并将
postgres
替换为 mysql
?
编辑: 试:-
DATABASE_URL: mysql://${MYSQL_USER:-root}:${MYSQL_PASSWORD:-password}@localhost:3567/${MYSQL_DB:-gk_app}?serverVersion=13&charset=utf8
,
DATABASE_URL: mysql://${MYSQL_USER:-root}:${MYSQL_PASSWORD:-password}@127.0.0.1:3567/${MYSQL_DB:-gk_app}?serverVersion=13&charset=utf8
&
DATABASE_URL: mysql://${MYSQL_USER:-root}:${MYSQL_PASSWORD:-password}@database:3567/${MYSQL_DB:-gk_app}?serverVersion=13&charset=utf8
所有这些都会产生相同的错误?
确保 DATABASE_URL 已检查且没有注释:https://github.com/dunglas/symfony-docker/pull/107
这是一个相当老的问题,总线我遇到了同样的问题,我解决了在 Dockerfile 中添加这些驱动程序的问题
UN 设置-eux;
安装 php 扩展
阿普库
国际
操作缓存
邮编
插座
amqp
PDO
mysqli
pdo_mysql
;
还能够针对本地 mysql 数据库运行,设置连接如下
mysql://youruser:[email protected]:3306/yourdatabse?serverVersion=8.0.30
但不要忘记允许外部连接到本地 mysql,绑定 mysql 配置文件中的 0.0.0.0 - 仅用于开发 - 。