如何使用 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 应用程序。因此,我必须设置 mysql、phpmyadmin 和 Apache Tomcat 才能访问网站。我想使用 docker 及其 docker-compose
应用程序来简化安装(如果我可以学习的话)。
我无法将mysql
和phpmyadmin
应用程序设置为一起工作。如果我能通过这第一步,我会尝试安装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
安装应用程序(mysql
、phpmyadmin
、tomcat
)?
【问题讨论】:
您可以尝试使用 bash 从php-admin
容器登录/访问db
容器吗?
我尝试了一些代码,但没有实现。我想,我的代码是错误的。你能建议一个代码吗?我该怎么做?
@PPShein 我使用此代码 docker exec -it desktop_db_1 /bin/bash
从 docker 进入 bash 屏幕,我尝试使用此代码 mysql -uroot -proot
或 mysql -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
现在,您可以通过phpmyadmin
http://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
现在,您可以通过phpmyadmin
http://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 环境变量
如何使用 pycharm 调试在 docker-compose 中运行的进程
Gravitational Teleport docker-compose简单运行