Ich bin in Symfony gewürzt, aber ziemlich neu für Docker, und ich habe eine "Verbindung abgelehnt Fehler", die ich nicht lösen kann.Symfony + Docker, Verbindung verweigert
ziemlich sicher, es ist ein Anfänger Fehler und dass die Lösung hier ist ganz einfach ...
Hier ist der Inhalt meiner docker-compose
Datei ist:
version: '3.2'
services:
cg-demo:
build: docker/cg-demo
container_name: cg-demo
working_dir: /var/www/html
volumes:
- .:/var/www/html
- ./docker/demo/vhost.conf:/etc/apache2/sites-available/000-default.conf:ro
- ./docker/demo/php.ini:/usr/local/etc/php/php.ini:ro
- ~/.ssh:/var/www/.ssh
- ~/.composer:/var/www/.composer
environment:
- SYMFONY_ENV
- DOMAIN_NAME: cg-demo.docker
- VIRTUAL_HOST: cg-demo.docker
depends_on:
- database
env_file: .env
ports:
- 8000:80
database:
image: percona:5.6
ports:
- 3306:3306
expose:
- 3306
container_name: cg-demo-database
volumes:
- /docker/database:/etc/mysql/conf.d
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: demo
tmpfs:
- /var/lib/mysql
- /tmpfs:size=300M
Dies wird von einem anderen Projekt stützt, die funktioniert, aber ich bin mir nicht sicher, was hier passiert ...
Ich habe auch einen phpmyadmin Container, hier nicht gezeigt. PhpMyAdmin verbindet sich korrekt mit der Datenbank und kann sie problemlos von jedem Webserver aus benutzen. Doch wenn es um die symfony Behälter kommt, ich habe diese, wann immer versucht, die Datenbank zu verwenden:
[Doctrine\DBAL\Exception\ConnectionException]
An exception occured in driver: SQLSTATE[HY000] [2002] Connection refused
[Doctrine\DBAL\Driver\PDOException]
SQLSTATE[HY000] [2002] Connection refused
[PDOException]
SQLSTATE[HY000] [2002] Connection refused
Die Verbindungsinformationen ist die folgende, in einer .env
Datei:
# Database credentials
DATABASE_HOST=database
DATABASE_PORT=3306
DATABASE_USER=root
DATABASE_PASSWORD=root
DATABASE_DB=cg-demo
docker ps
Aufruf gibt mir diese :
CONTAINER ID IMAGE COMMAND
CREATED STATUS PORTS NAMES
16a67dadeebb phpmyadmin/phpmyadmin "/run.sh phpmyadmin" 15 minutes ago Up 15 minutes 0.0.0.0:8001->80/tcp cg.phpmyadmin.docker
8bd783aa1dd1 cg_cg-demo "entrypoint.sh apa..." 15 minutes ago Up 15 minutes 0.0.0.0:8000->80/tcp cg-demo
2fc7cd9105ba percona:5.6 "docker-entrypoint..." 15 minutes ago Up 15 minutes (healthy) 3306/tcp cg-database
ich ping database
aus dem Demo-Container versucht haben und es funktioniert ...
EDIT 1:
addierten die folgenden auf die Datenbank-Container:
ports:
- 3306:3306
EDIT 2:
folgendes aus allen Behältern entfernt:
networks:
- default
EDIT 3:
Meine Lehre Konfiguration in app/config/config.yml
:
dbal:
host: "%env(DATABASE_HOST)%"
port: "%env(DATABASE_PORT)%"
dbname: "%env(DATABASE_DB)%"
user: "%env(DATABASE_USER)%"
password: "%env(DATABASE_PASSWORD)%"
charset: UTF8
mapping_types:
enum: string
server_version: 5.6
EDIT 4:
addierten die folgenden auf die Datenbank-Konfiguration:
expose:
- 3306
Sie haben den Port für MySQL belichten, wie Sie mit 'cg-demo' tat Service –
Vielen Dank für Ihr Feedback. Der Beitrag wurde aktualisiert (funktioniert immer noch nicht) – Zephyr
Eine weitere Sache, hatte ich ein ähnliches Problem, und ich entfernte die "Netzwerke" -Attribut von den Diensten und es funktionierte –