使用Doctrine(migration:migrate
)创建数据库时遇到问题。我遇到此错误:
没有已知的主机
使用localhost:3306
代替db可以解决问题,但是使用REST服务发送请求时出现了问题。
摘要:使用localhost:3306
-migration:migrate
可以正常工作,而REST服务不起作用,使用db-migration.migrate无效,并且REST服务可以工作。这些是我的设置:
.env
###> doctrine/doctrine-bundle ###
# Format described at http://docs.doctrine-project.org/projects/doctrine-
dbal/en/latest/reference/configuration.html#connecting-using-a-url
# For an SQLite database, use: "sqlite:///%kernel.project_dir%/var/data.db"
# Configure your db driver and server_version in
config/packages/doctrine.yaml
DATABASE_URL=mysql://user:pass@db/db_name
###< doctrine/doctrine-bundle ###
docker-compose.yml
version: "2"
services:
db:
image: mysql:5.7
container_name: db_container
restart: always
environment:
- MYSQL_ROOT_PASSWORD=123
- MYSQL_DATABASE=db_name
- MYSQL_USER=user
- MYSQL_PASSWORD=pass
volumes:
- ./mysql/data:/var/lib/mysql:rw
ports:
- 3306:3306
phpmyadmin:
image: phpmyadmin/phpmyadmin
container_name: phpmyadmin_container
links:
- db:db
ports:
- 8081:80
webserver:
image: nginx:alpine
container_name: symfony-webserver
volumes:
- ./symfony:/var/www/html
- ./docker/nginx/site.conf:/etc/nginx/conf.d/default.conf
ports:
- 8082:80
depends_on:
- php-fpm
php-fpm:
build: docker/php-fpm
container_name: symfony-php-fpm
volumes:
- ./symfony:/var/www/html
- ./docker/php-fpm/php-ini-overrides.ini:/etc/php/7.0/fpm/conf.d/99-overrides.ini
links:
- db
doctrine.yaml
parameters:
# Adds a fallback DATABASE_URL if the env var is not set.
# This allows you to run cache:warmup even if your
# environment variables are not available yet.
# You should not need to change this value.
env(DATABASE_URL): ''
doctrine:
dbal:
# configure these for your database server
driver: 'pdo_mysql'
server_version: '5.7'
charset: utf8mb4
default_table_options:
charset: utf8mb4
collate: utf8mb4_unicode_ci
url: '%env(resolve:DATABASE_URL)%'
orm:
auto_generate_proxy_classes: true
naming_strategy: doctrine.orm.naming_strategy.underscore
auto_mapping: true
mappings:
App:
is_bundle: false
type: annotation
dir: '%kernel.project_dir%/src/Entity'
prefix: 'App\Entity'
alias: App
答案 0 :(得分:1)
所有命令都应在容器中运行。
要进入您的fpm容器,您可以运行docker-compose exec -it php-fpm bash
(或ash
,具体取决于您使用的是debian基本映像还是alpine)
->在此shell中,您可以执行bin / console指令:migrate命令