加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

从docker容器连接到远程MySQL数据库

发布时间:2020-12-16 03:35:35 所属栏目:安全 来源:网络整理
导读:我正在努力将一个Django 1.5.x应用程序容器化,该应用程序通过ODBC连接到单独服务器上的MySQL数据库: [mysql_default]database = DB_NAMEdriver = /usr/lib64/libmyodbc5.soserver = REMOTE_DB_SERVERuser = DB_USERpassword = DB_USER_PWDport = 3306 我可

我正在努力将一个Django 1.5.x应用程序容器化,该应用程序通过ODBC连接到单独服务器上的MySQL数据库:

[mysql_default]
database = DB_NAME
driver = /usr/lib64/libmyodbc5.so
server = REMOTE_DB_SERVER
user = DB_USER
password = DB_USER_PWD
port = 3306

我可以在本地机器(docker之外)上运行Django应用程序,通过端口转发和远程数据库连接到远程数据库. SSH:

 ssh -L 3307:127.0.0.1:3306 MYID@REMOTE_DB_SERVER

我使用Centos 6.x为应用程序设置了Docker容器,但无法使MySQL连接正常工作.容器已安装MySQL并运行mysqld.

我的docker-compose.yml文件如下所示:

version: "2"
services:
  web:
    build: .
    image: MY_IMAGE
    container_name: MY_CONTAINER
    network_mode: "host"
    ports:
      - "3307:3306"
    command: /bin/bash

在容器运行的情况下,我可以执行以下命令(在容器外部)以在远程数据库上显示数据库:

docker exec MY_CONTAINER echo "show databases" | mysql -u DB_USER -pDB_USER_PWD -h 127.0.0.1 --port=3307

但是从容器内部,相同的命令失败:

    echo "show databases" | mysql -u DB_USER -pDB_USER_PWD -h 127.0.0.1 --port=3306

ERROR 2003 (HY000): Can't connect to MySQL server on '127.0.0.1' (111)
最佳答案
我通过在容器内使用docker主机地址而不是’127.0.0.1’来解决这个问题:

echo“show databases”| mysql -u DB_USER -pDB_USER_PWD -h 10.0.2.2 –port = 3306

由于Docker主机ip可能会有所不同,因此本文将介绍获取正确地址的步骤:

How to get the IP address of the docker host from inside a docker container

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读