使用podman-compose时,如何访问数据库容器



在使用podman-compose时,我一直试图弄清楚如何连接到mariadb容器,但我一直收到一个错误。

以下是我所做的:

软件版本

podman version = 3.3.1
podman-compose version = podman-compose-0.1.7-2.git20201120.el8.noarch`

docker compose.yml

version: '3'
services:
db:
image: mariadb:latest
environment:
MARIADB_USER: user
MARIADB_PASSWORD: pass
MARIADB_DATABASE: testdb
MARIADB_ROOT_PASSWORD: rootpass
volumes:
- db_data:/var/lib/mysql

当我使用podman-compose up -d旋转此容器时

然后尝试使用连接到此数据库

podman exec -it project_db_1 mariadb -uroot -prootpass

我得到这个错误:

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

作为普通用户和root用户,我都会收到这个错误。

然而,当我用podman运行同一个容器时:

波德曼司令部

podman run -d 
--name mariadb 
-e MARIADB_USER=user 
-e MARIADB_PASSWORD=pass 
-e MARIADB_DATABASE=testdb 
-e MARIADB_ROOT_PASSWORD=rootpass 
mariadb:latest

然后尝试使用连接到此数据库

podman exec -it mariadb mariadb -uroot -prootpass

我能够成功登录。

有人能向我解释一下我在podman compose上做错了什么吗?或者为什么它不允许我使用我提供的凭据登录?

好吧,对于任何想知道我做了什么来解决这个问题的人来说。。。首先,我卸载了podman&podman compose是因为它有太多的问题,所以我安装了docker&码头工人作曲。

其次,当我在docker compose中运行这个脚本时,我遇到了一个错误,这个错误没有出现在podman compose中。

错误:services.db.environment must be a mapping

在谷歌上搜索了这个错误后,我发现我需要像这样格式化环境部分:

version: '3'
services:
db:
image: mariadb:latest
environment:
- MARIADB_USER=user
- MARIADB_PASSWORD=pass
- MARIADB_DATABASE=testdb
- MARIADB_ROOT_PASSWORD=rootpass
volumes:
- db_data:/var/lib/mysql

在我修复了这个问题之后,docker compose运行得很好,我可以连接到我的数据库,甚至可以从另一个容器连接。我确实用podman-compose和这个代码修复程序做了一个测试,但它仍然不起作用。所以我只打算使用docker,直到podman解决他们的问题。

您需要确保绑定到;"公共";容器的地址。默认情况下,它将绑定到0.0.0.0。在该界面上,您无法从其他pod访问它
向服务添加一个command,并设置--bind-address。像这样:

services:
db:
image: docker.io/mariadb:latest
command: --bind-address=db

这将使它监听正确的接口:(

最新更新