docker - 无法远程登录到 MariaDB 容器
问题描述
我正在使用 docker-compose 运行 MariaDB,它运行良好。我正在获取 jasper 服务器和 maria DB docker 图像并运行它们。当我远程登录 jasper 服务器映像时,它会正确响应,但是当我远程登录到 MariaDB 时,它会说:
telnet localhost 3306
Trying ::1...
Trying 127.0.0.1...
telnet: Unable to connect to remote host: Connection refused
我可能做错了什么?
这是输出sudo docker ps -a
:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9e759f106006 bitnami/jasperreports:7 "/app-entrypoint.sh …" 21 minutes ago Up 21 minutes 0.0.0.0:9093->8080/tcp, 0.0.0.0:443->8443/tcp ceyedev_jasperreports_1
9242e52f6af8 bitnami/mariadb:10.3 "/opt/bitnami/script…" 21 minutes ago Up 21 minutes 3306/tcp ceyedev_mariadb_1
这是我的码头工人撰写文件:
version: '2'
services:
mariadb:
image: 'bitnami/mariadb:10.3'
environment:
- MARIADB_USER=bn_jasperreports
- MARIADB_DATABASE=bitnami_jasperreports
- ALLOW_EMPTY_PASSWORD=yes
volumes:
- 'mariadb_data:/bitnami'
jasperreports:
image: 'bitnami/jasperreports:7'
environment:
- MARIADB_HOST=mariadb
- MARIADB_PORT_NUMBER=3306
- JASPERREPORTS_DATABASE_USER=bn_jasperreports
- JASPERREPORTS_DATABASE_NAME=bitnami_jasperreports
- ALLOW_EMPTY_PASSWORD=yes
ports:
- '9093:8080'
- '443:8443'
volumes:
- 'jasperreports_data:/bitnami'
depends_on:
- mariadb
volumes:
mariadb_data:
driver: local
jasperreports_data:
driver: local
解决方案
您必须在 Docker compose 文件中打开端口(您发布的内容称为 Docker Compose 文件,而不是 Dockerfile,后者包含构建 Docker 映像的命令)。
在该mariadb
部分中使其如下所示:
services:
mariadb:
image: 'bitnami/mariadb:10.3'
environment:
- MARIADB_USER=bn_jasperreports
- MARIADB_DATABASE=bitnami_jasperreports
- ALLOW_EMPTY_PASSWORD=yes
volumes:
- 'mariadb_data:/bitnami'
ports:
- 3306
这样,MariaDB 的 3306 端口就会暴露给你的本地计算机。这表示:
- 您可以通过 3306 端口访问 MariaDB
- 任何可以直接通过网络访问您的计算机(即本地 IP 地址)的人都可以通过端口 3306 访问 MariaDB。
请记住关于系统安全的这两件事。
推荐阅读
- generator - 用于日志分析的生成器使用情况
- java - 如何保存以前的hssf单元格值inn android studio?
- reactjs - 在现有的谷歌云静态存储桶中反应“下一个开始”
- tokenize - LaBSE 预处理器输出的文本表示?
- python - py2app 访问非python文件
- react-native - 一些地址在英国没有返回邮政编码
- python - 排序的数据框在连接两个数据框时以无序的方式返回数据
- nuget - 有没有办法检查 nuget 包是否已经在 ProGet Repo 上?
- javascript - 三元模型= y 有什么区别?y : '看' ; 和模型 = y ?'看' : ' '; 在 JavaScript 中?
- node.js - 将 express Response 转换为 http ServerResponse