如何使用 Docker-Compose 文件运行 Phpmyadmin、Mysql 和 Apache Tomcat?

Posted

技术标签:

【中文标题】如何使用 Docker-Compose 文件运行 Phpmyadmin、Mysql 和 Apache Tomcat?【英文标题】:How Can Run Phpmyadmin, Mysql and Apache Tomcat with Docker-Compose File? 【发布时间】:2019-05-31 20:44:33 【问题描述】:

我正在尝试运行 java web 应用程序。因此,我必须设置 mysqlphpmyadmin 和 Apache Tomcat 才能访问网站。我想使用 docker 及其 docker-compose 应用程序来简化安装(如果我可以学习的话)。

我无法将mysqlphpmyadmin 应用程序设置为一起工作。如果我能通过这第一步,我会尝试安装tomcat

这是我使用的代码(docker-compose.yml)

version: '2'
services:
    db:
        image: mysql
        restart: always
        ports:
            - "3306:3306"
        environment:
            MYSQL_DATABASE: myDb
            MYSQL_USER: admin
            MYSQL_PASSWORD: 12345
            MYSQL_ROOT_PASSWORD: root
    phpmyadmin:
        image: phpmyadmin/phpmyadmin
        restart: always
        ports:
        - "8080:80"
        environment:
            MYSQL_USER: admin
            MYSQL_PASSWORD: 12345
            MYSQL_ROOT_PASSWORD: root
        depends_on: 
            - db
        links:
            - db

我在命令行应用程序中用docker-compose up打开以上代码。

我要去http://localhost:8080/页面,我正在输入admin作为用户名,12345作为密码。

我得到的错误是:

Cannot log in to MySQL server
mysqli_real_connect (): The server requested authentication method
mysqli_real_connect (): (HY000 / 2054): The server requested authentication method

如何使用docker-compose 安装应用程序(mysqlphpmyadmintomcat)?

【问题讨论】:

您可以尝试使用 bash 从php-admin 容器登录/访问db 容器吗? 我尝试了一些代码,但没有实现。我想,我的代码是错误的。你能建议一个代码吗?我该怎么做? @PPShein 我使用此代码 docker exec -it desktop_db_1 /bin/bash 从 docker 进入 bash 屏幕,我尝试使用此代码 mysql -uroot -prootmysql -uadmin -p12345 连接内部,我成功访问但我仍然无法访问http://localhost:8080/ 【参考方案1】:

目前phpmyadmin 和MySQL 可以一起工作。解决了。​​

A 计划: 这是我的docker-compose.yml 文件:

version: '2'
services:
    db:
        container_name: db
        image: mysql
        restart: always
        ports:
            - "3306:3306"
        environment:
            MYSQL_DATABASE: myDb
            MYSQL_USER: admin
            MYSQL_PASSWORD: 12345
            MYSQL_ROOT_PASSWORD: root
        command: --default-authentication-plugin=mysql_native_password
    phpmyadmin:
        depends_on: 
            - db
        container_name: phpmyadmin
        image: phpmyadmin/phpmyadmin
        restart: always
        ports:
            - "8080:80"
        environment:
            MYSQL_USER: admin
            MYSQL_PASSWORD: 12345
            MYSQL_ROOT_PASSWORD: root
            PMA_HOST: db

现在,您可以通过phpmyadminhttp://localhost:8080 进入MySQL

也可以用这个方法解决。

B 计划:这是我的docker-compose.yml 文件:

version: '2'
services:
    db:
        container_name: db
        image: mysql
        restart: always
        ports:
            - "3306:3306"
        environment:
            MYSQL_DATABASE: myDb
            MYSQL_USER: admin
            MYSQL_PASSWORD: 12345
            MYSQL_ROOT_PASSWORD: root
    phpmyadmin:
        depends_on: 
            - db
        container_name: phpmyadmin
        image: phpmyadmin/phpmyadmin
        restart: always
        ports:
            - "8080:80"
        environment:
            MYSQL_USER: admin
            MYSQL_PASSWORD: 12345
            MYSQL_ROOT_PASSWORD: root
            PMA_HOST: db

命令行的命令:

$ docker stop phpmyadmin
$ docker exec -it db bash
$ mysql -u root -proot
$ ALTER USER root IDENTIFIED WITH mysql_native_password BY 'root';
$ exit
$ exit
$ docker start phpmyadmin

现在,您可以通过phpmyadminhttp://localhost:8080 进入MySQL

参考:phpMyAdmin on MySQL 8.0

【讨论】:

在这个问题中没有 tomcat ......但是计划 A 和计划 B 都在工作。非常适合初学者 docker 的教育练习。【参考方案2】:
version: '3.1'
    services:
      db:
        image: mysql
        command: --default-authentication-plugin=mysql_native_password
        restart: always
        ports:
          - 3307:3306
        environment:
          MYSQL_ROOT_PASSWORD: 1234
      phpmyadmin:
        image: phpmyadmin/phpmyadmin
        restart: always
        ports:
          - 8080:80
        environment:
          MYSQL_ROOT_PASSWORD: 1234
        links:
          - db

【讨论】:

欢迎来到 SO。如果您可以描述您所做的更改以及您认为它如何回答问题,那就太好了。

以上是关于如何使用 Docker-Compose 文件运行 Phpmyadmin、Mysql 和 Apache Tomcat?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用来自其他目录的 docker-compose 环境变量

使用 docker-compose 运行 MySQL

如何使用 pycharm 调试在 docker-compose 中运行的进程

Gravitational Teleport docker-compose简单运行

如何在 AWS CodeBuild 上运行 docker-compose?

使用docker-compose运行Django