仍在等待数据库准备就绪...或者数据库可能无法访问。还剩 59 次尝试

问题描述 投票:0回答:2

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

所有这些都会产生相同的错误?

docker symfony doctrine
2个回答
0
投票

确保 DATABASE_URL 已检查且没有注释:https://github.com/dunglas/symfony-docker/pull/107


0
投票

这是一个相当老的问题,总线我遇到了同样的问题,我解决了在 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 - 仅用于开发 - 。

© www.soinside.com 2019 - 2024. All rights reserved.