azure - Docker Compose php/mysql 无法连接mysql

标签 azure docker docker-compose redbean

我尝试根据 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/

相关文章:

azure - 身份验证和授予授权后 OpenIdConnect 错误重定向

docker - docker以不同顺序使用命令运行行为

docker - 在 Windows 中使用 Docker Compose 运行 Kafka 时出现问题

docker - 将容器添加到现有的docker-compose.yml

Docker compose无法启动已在使用的服务地址?

git - 让 Git 在 Visual Studio 中忽略 WebDeploy 的 PublishProfile

c# - 基于 Azure 服务总线订阅中的系统属性的 SQLFilter

c# - Azure Durable Functions - OrchestrationTrigger 连续执行第一个等待的事件

java - 使用 Java 连接到 Docker 上的多节点 Couchbase 集群

docker 未经授权的: authentication required - upon push with successful login