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

How do I access a db container when using 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 命令

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.

其次,当我 运行 在 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 解决他们的问题。