我使用以下dockerfile为laravel项目创建一个容器:
FROM composer:1.8
RUN apk add --no-cache libpng libpng-dev libjpeg-turbo-dev libwebp-dev zlib-dev libxpm-dev
RUN docker-php-ext-install pdo mbstring gd
RUN docker-php-ext-enable gd
WORKDIR /app
COPY . /app
RUN composer install
CMD php artisan serve --host=0.0.0.0 --port=8181
EXPOSE 8181
然后我尝试将其用作docker-compose.yml
文件中的服务:
version: '3'
services:
webservice:
image: private.repo.com/my_user/webservice
ports:
- '80:8181'
depends_on:
- mariadb
mariadb:
image: mariadb
volumes:
- './db:/var/lib/mysql'
environment:
- MYSQL_ROOT_PASSWORD=some_password
phpmyadmin:
image: phpmyadmin/phpmyadmin
depends_on:
- mariadb
ports:
- '443:80'
environment:
- PMA_HOST=mariadb
- PMA_PORT=3306
现在我要调用API时遇到错误500。 (错误是[QueryException]找不到驱动程序)
我搜索了一下,发现所有的事情通常都是因为.env
文件出了问题
这是我在laravel项目中的.env文件
DB_CONNECTION=mysql
DB_HOST=mariadb
DB_PORT=3306
DB_DATABASE=my_db_name
DB_USERNAME=my_db_user
DB_PASSWORD=my_db_pass
DB_HOST
与我的docker-compose.yml文件相同。
我还尝试在我的3306
服务中导出端口mariadb
,但是它也不起作用
我哪里出错了,请帮助
-----------更新-----------
我还检查了mariadb服务的IP,并将其放在我的服务容器中(它们都在工作,没有关闭它们),但是问题仍然存在。
答案 0 :(得分:0)
实际上非常简单。
我也必须安装pdo_mysql
现在我的docker文件是这样的:
FROM composer:1.8
RUN apk add --no-cache libpng libpng-dev libjpeg-turbo-dev libwebp-dev zlib-dev libxpm-dev
RUN docker-php-ext-install pdo mbstring gd pdo_mysql # this line is changed
RUN docker-php-ext-enable gd
WORKDIR /app
COPY . /app
RUN composer install
CMD php artisan serve --host=0.0.0.0 --port=8181
EXPOSE 8181
我在这里找到了解决方法:https://github.com/docker-library/php/issues/62#issuecomment-70306737