php - 在 Docker 中从 php 连接到 mysql

标签 php mysql nginx docker phpmyadmin

我从 docker 开始,在进行正确的配置时遇到一些问题。 该框架需要一个脚本来使后端工作。 这需要一个sql连接。我找到了一种方法可以让phpmyadmin工作,但是脚本无法连接mysql数据库。 如果对 Docker 有更多理解的人可以在出现问题时给我提示。

myhomepage-mysql:
  image: mysql:5.7
  container_name: myhomepage-mysql
  environment:
    - MYSQL_ROOT_PASSWORD=toor
    - MYSQL_DATABASE=MyHomepage
    - MYSQL_USER=homepage_admin
    - MYSQL_PASSWORD=admin123

myhomepage-webserver:
  image: phpdockerio/nginx:latest
  container_name: myhomepage-webserver
  volumes:
      - ..:/var/www/myhomepage
      - ./nginx/nginx.conf:/etc/nginx/conf.d/default.conf
  ports:
   - "8080:80"
  links:
   - myhomepage-php-fpm

myhomepage-php-fpm:
  build: .
  dockerfile: php-fpm/Dockerfile
  container_name: myhomepage-php-fpm
  volumes:
    - ..:/var/www/myhomepage
    - ./php-fpm/php-ini-overrides.ini:/etc/php/7.1/fpm/conf.d/99-overrides.ini
  links:
    - myhomepage-mysql

myhomepage-phpmyadmin:
    image: phpmyadmin/phpmyadmin:latest
    container_name: myhomepage-phpmyadmin
    environment:
        PMA_USER: root
        PMA_PASSWORD: toor
        PMA_HOST: mysql
        MYSQL_ROOT_PASSWORD: toor
    ports:
        - "8181:80"
    volumes:
       - /sessions
    links:
      - myhomepage-mysql:mysql

第二个问题是 phpmyadmin 给出以下消息:

 Your PHP MySQL library version 10.1.20-MariaDB differs from your MySQL server version 5.7.17. This may cause unpredictable behavior.

我可以从 http://localhost:8080/phpmyadmin 访问 phpmyadmin不是来自http://localhost:8181/

最佳答案

目前此配置有效:

project-nginx:
  container_name: project-webserver
  image: nginx:latest
  volumes:
        - ..:/var/www/project
        - ./nginx/nginx.conf:/etc/nginx/conf.d/default.conf
        - ./nginx/phpmyadmin.conf:/etc/nginx/conf.d/phpmyadmin.conf
  ports:
     - 80:80
  links:
    - project-php
    - project-phpmyadmin

project-php:
  build: .
  dockerfile: php-fpm/Dockerfile
  container_name: project-php
  expose:
    - 9000
  volumes:
    - ..:/var/www/project
    - ./php-fpm/php-ini-overrides.ini:/etc/php/7.1/fpm/conf.d/99-overrides.ini
  links:
    - project-mysql

project-mysql:
  image: mysql
  container_name: project-mysql
  volumes:
    - /var/lib/mysql
  environment:
    - MYSQL_ROOT_PASSWORD=toor
    - MYSQL_DATABASE=project
    - MYSQL_USER=project_admin
    - MYSQL_PASSWORD=admin123

project-phpmyadmin:
  image: phpmyadmin/phpmyadmin
  container_name: project-phpmyadmin
  environment:
        - "PMA_HOST: project-mysql"
        - "PMA_USER : root"
        - "PMA_PASSWORD: toor"
  links:
    - project-mysql:db
  volumes:
    - /sessions
    - ./phpmyadmin/config.user.inc.php:/etc/phpmyadmin/config.user.inc.php

关于php - 在 Docker 中从 php 连接到 mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41813850/

相关文章:

javascript - 在 Javascript 中突出显示单词 - 为什么在页面完全加载后它们不会保持突出显示?

php - 如果字段为 true,则显示图像

php - 更新表 当表分组并使用 MySQL 删除同一行时

javascript - 在 Mysql 和 Javascript 中获取同一日期的不同时间戳?

php - PDO 捕获结果

php - 使用 php 将 MySql 查询滚动到下一列。

php - 势不可挡的循环 X(

php - WebSocket 可以连接到 Socket 服务器吗?

nginx - 使用Kuberenetes入口 Controller 作为集群中其他服务的反向代理

node.js - Nginx 删除端口号 :8080 in the url