首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >码头-堆肥LEMP :错误:找不到司机

码头-堆肥LEMP :错误:找不到司机
EN

Stack Overflow用户
提问于 2021-02-21 16:25:34
回答 1查看 191关注 0票数 0

我正试图在Linux中用docker-组合创建LEMP,我设法让PHP、NGINX和MySQL为我工作,但是当从php文件连接到DB时,它会返回异常:could not find driver

这是我的docker-复合. file文件

代码语言:javascript
复制
web:
    build: .
nginx:
  image: tutum/nginx
  ports:
    - "80:80"
  volumes:
    - ./sites-available/default:/etc/nginx/sites-available/default
    - ./sites-available/default:/etc/nginx/sites-enabled/default

    - ./logs/nginx-error.log:/var/log/nginx/error.log
    - ./logs/nginx-access.log:/var/log/nginx/access.log

phpfpm:
  image: php:fpm
  ports:
    - "9000:9000"
  volumes:
    - ./public_html:/usr/share/nginx/html

mysql:
  image: mysql:5.7
  command: --default-authentication-plugin=mysql_native_password
  restart: always
  ports:
    - "33061:3306"
  volumes:
    - ./public_html/Model:/docker-entrypoint-initdb.d
  environment:
    MYSQL_DATABASE: tienda
    MYSQL_USER: user
    MYSQL_PASSWORD: user
    MYSQL_ROOT_PASSWORD: root

这是我的DockerFile

代码语言:javascript
复制
FROM php:7.2.19-apache-stretch

# PHP extensions
RUN docker-php-ext-install mysqli pdo pdo_mysql

这是连接到DB的PHP文件

代码语言:javascript
复制
<?php
abstract class TiendaDB {
private static $server = 'localhost';
private static $db = 'tienda';
private static $user = 'root';
private static $password = 'root';
public static function connectDB() {
try {
$connection = new PDO("mysql:host=".self::$server.";dbname=".self::$db.";charset=utf8", self::$user, self::$pass>} catch (PDOException $e) {
echo "No se ha podido establecer conexión con el servidor de bases de datos.<br>";
die ("Error: " . $e->getMessage());
}
return $connection;
}
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-22 10:58:39

我设法解决了这个问题,我添加了@β.εηοιτ.βε的Dockerfile文件,它给了我另一个错误,所以我又做了一次,它对我起了作用:

文件夹结构:

代码语言:javascript
复制
DOCKER_LEMP
├── app                 # All of your php file should be placed here, treat it like /var/www directory
│   └── index.php       # Default index file
├── database            # The database is saved here
├── nginx               # This folder contains nginx specified configuration
│   └── default.conf    # Default configuration file
├── php                 # Contains custom PHP7-fpm docker configuration
│   └── Dockerfile      # Docker configuration file for PHP container
├── docker-compose.yml  # Docker configuration for this project
└── readme.md           # Description for this project

Nginx:

代码语言:javascript
复制
server {
    listen 80;
    index index.php index.html;
    server_name localhost;
    error_log  /var/log/nginx/error.log;
    access_log /var/log/nginx/access.log;
    root /app;

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass php:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }
}

docker-compose.yml配置

代码语言:javascript
复制
version: '3'

networks:
    LEMP:

services:
    nginx:
        image: nginx:stable-alpine
        container_name: LEMP_nginx
        ports:
            - "80:80"
        volumes:
            - ./app:/app
            - ./nginx/default.conf:/etc/nginx/conf.d/default.conf
        depends_on:
            - php
        networks:
            - LEMP

    mysql:
        image: mysql:latest
        container_name: LEMP_mysql
        volumes:
            - ./database:/var/lib/mysql:rw
        ports:
            - "3306:3306"
        depends_on:
            - nginx
        environment:
            - MYSQL_ROOT_PASSWORD=admin123
        networks:
            - LEMP

    php:
        # image: php:7-fpm-alpine
        build: ./php
        container_name: LEMP_php
        volumes:
            - ./app:/app
        ports:
            - "9000:9000"
        networks:
            - LEMP

    phpmyadmin:
        image: phpmyadmin/phpmyadmin
        container_name: LEMP_phpmyadmin
        ports:
            - "8000:80"
        environment:
            PMA_ARBITRARY: 1
        depends_on:
            - mysql
        networks:
            - LEMP

Dockerfile配置:

代码语言:javascript
复制
FROM php:7-fpm-alpine
RUN docker-php-ext-install mysqli pdo pdo_mysql
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66304462

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档