运行 MariaDB 在 docker 容器中使用 docker 堆栈
Running MariaDB in a docker container using docker stack
我正在尝试按照 https://docs.docker.com/get-started/part3/ 上的说明进行操作,但将其更改为单节点 MariaDB 数据库。我正在使用看起来像这样的 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 ps jeesample
时,我得到以下信息:
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 <container ID>
以获取日志结果。由于它在 docker-compose 上,容器可能会在短时间内消失,因此 -f
选项将保持连接直到它终止。
为了解决日志说root用户需要密码的问题,我只需要添加
MYSQL_RANDOM_ROOT_PASSWORD: "true"
尽管还有其他选项,例如
MYSQL_ROOT_PASSWORD: "blah" // visible on source
MYSQL_ALLOW_EMPTY_PASSWORD: "yes" // not recommended
我正在尝试按照 https://docs.docker.com/get-started/part3/ 上的说明进行操作,但将其更改为单节点 MariaDB 数据库。我正在使用看起来像这样的 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 ps jeesample
时,我得到以下信息:
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 <container ID>
以获取日志结果。由于它在 docker-compose 上,容器可能会在短时间内消失,因此 -f
选项将保持连接直到它终止。
为了解决日志说root用户需要密码的问题,我只需要添加
MYSQL_RANDOM_ROOT_PASSWORD: "true"
尽管还有其他选项,例如
MYSQL_ROOT_PASSWORD: "blah" // visible on source
MYSQL_ALLOW_EMPTY_PASSWORD: "yes" // not recommended