将docker-compose环境传递给symfonyconfiguration
我想从docker-compose文件传递configuration参数到我的Symfony应用程序,我试过这个:
app: image: <NGINX + PHP-FPM IMAGE> environment: DATABASE_HOST: db
我的parameters.yml文件:
database_host: "%env(DATABASE_HOST)%"
我得到错误500“找不到环境variables:DATABASE_HOST”
我也尝试了docker-compose中的SYMFONY__DATABASE_HOST,但也无法正常工作。
它是如何工作的?
您收到的错误是指Symfony运行时环境variables(请参阅此处) 。 Docker组合环境variables是从驻留在.env
文件的构build上下文(也就是您希望docker-compose运行的目录)中的docker-compose.yml
文件中docker-compose.yml
。 你真正想要做的是确保你在Symfony config / parameters和docker-compose.yml
文件中设置的环境variablesdocker-compose.yml
匹配, 尤其是db主机 。
您应该考虑将您的映像分解为PHP-FPM和Nginx映像,以便根据Docker概述的最佳实践,具有更好的潜在可扩展性和关注点分离。 所有这些技术都定期维护Docker Hub上的图像。
这里是我docker-compose.yml
,它在一个多容器环境中为PHP-FPM,MySQL和Nginx创build容器,包含当今最新的稳定包。
version: '3' services: db: image: mysql volumes: - ./.data/db:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} MYSQL_DATABASE: ${MYSQL_DATABASE} MYSQL_USER: ${MYSQL_USER} MYSQL_PASSWORD: ${MYSQL_PASSWORD} php: build: php7.1-fpm depends_on: - db ports: - "9000:9000" volumes: - symfony-bind-mount:/var/www/symfony - symfony-logs-bind-mount:/var/www/symfony/app/logs nginx: build: nginx depends_on: - php ports: - "8025:8025" - "80:80" volumes: - symfony-bind-mount:/var/www/symfony - nginx-logs-bind-mount:/var/log/nginx volumes: symfony-bind-mount: driver: local driver_opts: o: bind,rw type: none device: ${SYMFONY_APP_PATH} nginx-logs-bind-mount: driver: local driver_opts: o: bind,rw type: none device: ${DOCKER_SYMFONY_PATH}/logs/nginx symfony-logs-bind-mount: driver: local driver_opts: o: bind,rw type: none device: ${DOCKER_SYMFONY_PATH}/logs/symfony
这是我的.env文件:
# Symfony application's path SYMFONY_APP_PATH=/absolute/path/to/symfony/project # Path to local docker-symfony repository DOCKER_SYMFONY_PATH=/absolute/path/to/sibling/docker/directory # MySQL MYSQL_ROOT_PASSWORD=root MYSQL_DATABASE=mydb MYSQL_USER= MYSQL_PASSWORD=password
你可以在这里检查我的fork的maxpou的docker-symfony库。 我已经更新了docker-compose.yml,绑定挂载与Compose文件格式的版本3兼容。
- 如何将环境variables值传递到docker容器中的文件我试图运行
- 使用docker运行echo环境variables
- Docker将一个variables传递给运行git clone的shell脚本
- 如何为Docker-compose文件设置一个var?
- 我们可以通过cmd行传递ENVvariables,同时通过dockerfile构build一个docker镜像吗?
- 在Docker中保留Symfony2应用程序开发的环境variables值
- docker-compose使用来自.env文件的环境variables
- 如何通过env-file设置环境variables
- Docker上的Dockerfile传递环境构build