我尝试根据 the documentation 创建一个简单的多容器应用程序使用 docker compose 并将其部署在 azure 上。
文件夹结构:
-rootfolder:
docker-compose.yml
-webapp:
index.php
Dockerfile
./docker-compose.yml:
version: '3.3'
services:
php:
build:
context: ./webapp
dockerfile: Dockerfile
image: php:7.2-apache
volumes:
- ./webapp:/var/www/html/
depends_on:
- db
ports:
- 80:80
environment:
DB_HOST: db:3306
DB_USER: dbuser
DB_PASSWORD: dbpassword
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
ports:
- 3306:3306
environment:
MYSQL_ROOT_PASSWORD: somerootpw
MYSQL_DATABASE: dbname
MYSQL_USER: dbuser
MYSQL_PASSWORD: dbpassword
volumes:
db_data: #like in the official documentation empty
./webapp/Dockerfile:
FROM php:7.2-apache
COPY . /var/www/html/
EXPOSE 80
./webapp/index.php:
<?php
require 'rb.php';
R::setup( 'mysql:host=db:3306;dbname=dbname', 'dbuser', 'dbpassword' );
$post = R::dispense( 'post' );
$post->title = 'My holiday';
$id = R::store( $post );
$post = R::load( 'post', $id );
print_r($post);
?>
现在我做 $ docker compose up
并访问 http://localhost:
Fatal error: Uncaught PDOException: Could not connect to database (dbname).
- 首先在本地运行我缺少什么?其次,我是否需要更改任何内容才能立即在 Azure 上运行?
最佳答案
请尝试使用 root 密码进行身份验证?
如果你也尝试连接数据库容器,我想你会遇到同样的错误,除非o
chmod 755 /var/lib/mysql
这在这篇文章 https://doc4dev.com/en/create-a-web-site-php-apache-mysql-in-5-minutes-with-docker/ 中有解释。
我想如果你尝试使用 root:somerootpw 它应该可以工作。 至少你可以尝试一下:)
你也可以尝试为 mysql 镜像创建一个 dockerfile:
FROM mysql:latest
USER root
RUN chmod 755 /var/lib/mysql
关于azure - Docker Compose php/mysql 无法连接mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66047457/