使用docker堆栈在docker容器中运行MariaDB

使用docker堆栈在docker容器中运行MariaDB,docker,docker-compose,mariadb,Docker,Docker Compose,Mariadb,我试图按照上的说明操作,但将其更改为单节点数据库。我使用的是一个docker compose.yml文件,看起来像这样 version: "3" services: database: image: mariadb:latest environment: MYSQL_DATABASE: jeesample MYSQL_USER: jeeuser MYSQL_PASSWORD: password networks: - web

我试图按照上的说明操作,但将其更改为单节点数据库。我使用的是一个
docker compose.yml
文件,看起来像这样

version: "3"
services:
  database:
    image: mariadb:latest
    environment:
      MYSQL_DATABASE: jeesample
      MYSQL_USER: jeeuser
      MYSQL_PASSWORD: password
    networks:
    - webnet
    ports:
    - "3307:3306"
networks: 
  webnet:
然后我开始使用

docker stack deploy -c docker-compose.yml jeesample
但是,当我查看docker stack Jeeps示例时,我得到以下信息:

ID            NAME                      IMAGE           NODE  DESIRED STATE  CURRENT STATE                   ERROR                      PORTS
9yjyzmi86aqm  jeesample_database.1      mariadb:latest  moby  Running        Running less than a second ago
gqamjzc2u1fw   \_ jeesample_database.1  mariadb:latest  moby  Shutdown       Failed 6 seconds ago            "task: non-zero exit (1)"
615zc8s0rts1   \_ jeesample_database.1  mariadb:latest  moby  Shutdown       Failed 18 seconds ago           "task: non-zero exit (1)"
pod5ldwn6p6v   \_ jeesample_database.1  mariadb:latest  moby  Shutdown       Failed 27 seconds ago           "task: non-zero exit (1)"
ma1gkri9os14   \_ jeesample_database.1  mariadb:latest  moby  Shutdown       Failed 37 seconds ago           "task: non-zero exit (1)"

尝试使用
jdbc连接到它:mariadb://localhost:3307/jeesample
从本地计算机上的SQL客户端发送失败,因为我无法连接

诊断此问题的一种方法是查看日志。要获取日志,请执行
docker ps
获取容器列表,然后执行
docker logs-f
获取日志结果。由于它位于docker compose上,容器可能会在短时间后消失,因此
-f
选项将保持连接,直到终止

为了解决日志中说root用户需要密码的问题,我只需要添加

MYSQL_RANDOM_ROOT_PASSWORD: "true"
尽管还有其他选择,例如

MYSQL_ROOT_PASSWORD: "blah" // visible on source
MYSQL_ALLOW_EMPTY_PASSWORD: "yes" // not recommended

很高兴知道,还有?你能详细说明你的期望吗?看不到问题…“无法连接”-错误的文本可能会提供一些线索。