我正在尝试为本地环境的一些PHP项目设置一个docker。我创建了docker-compose
文件:
############
## This is the LOCAL docker-compose. local is not in the file to make it default,## easy for development.
############
version: '3.5'
services:
nginx:
build: ./docker/images/nginx
image: project/nginx:latest
ports:
- "80:80"
expose:
- "80"
volumes:
- project_volume:/var/www/vhosts/abboom
networks:
project:
aliases:
- project.local.net
environment:
- VIRTUAL_HOST=project.local.net
php:
build: ./docker/images/php
image: project/php:latest
ports:
- "7778:7778"
expose:
- "9000"
volumes:
- project_volume:/var/www/vhosts/project
networks:
- project
workspace:
build: ./docker/images/workspace
image: project/workspace:latest
volumes:
- project_volume:/var/www/vhosts/project
working_dir: /var/www/vhosts/project
networks:
- project
redis_disk:
build: ./docker/images/redis_disk
image: project/redis:latest
ports:
- "6379:6379"
volumes:
- redis_data:/data
networks:
- project
mysql:
image: project/mysql:latest
build: ./docker/images/mysql
environment:
MYSQL_ROOT_PASSWORD: secret
volumes:
- mysqldata:/var/lib/mysql
networks:
- project
ports:
- "33066:3306"
networks:
project:
name: project
volumes:
mysqldata:
driver: local
redis_data:
driver: local
project_volume:
driver: local
driver_opts:
type: nfs
device: "$PWD/project"
o: bind
也许我还需要为一个项目共享nginx虚拟主机(我从登台服务器获取了该虚拟主机配置,也许还需要更多更改?)
server {
listen 80;
server_name project.local.net;
root /var/www/vhosts/project/public;
index index.php;
access_log /var/log/nginx/host.access.log main;
# redirect server error pages to the static page /50x.html
#
error_page 400 404 500 502 503 504 /500.html;
location = /500.html {
}
location ~ /(assets/|content/|images/|stylesheets/|javascripts/|vendor/|fonts/|favicon.ico) {
root /var/www/vhosts/project/public;
}
location / {
root /var/www/vhosts/project/public;
try_files $uri $uri/ /index.php?$args;
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
因此问题是,当我尝试从浏览器访问网站时,例如(例如)从Uncaught PDOException: could not find a driver in
或{{ 1}}容器全部正常工作。
我假设出于某种原因worksapce
容器未与php
容器链接,并尝试在nginx
容器内查找pdo驱动程序,而不是在{ {1}}?但这听起来似乎不正确,因为它开始处理php脚本并仅在pdo上进行堆栈,因此它连接到php
容器,因此我不确定在哪里查找问题
之前,我已经为许多项目进行了docker设置,但是它们是使用nginx
,PHP
之类的PHP框架编写的,但这是一个手写项目,也许还需要进行一些其他更改?
已更新
这是一个php Docker文件:
php
还Laravel
在已启用的扩展程序列表中显示Symfony