Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 应用程序端口转发中的Docker容器_Python_Docker_Iptables_Portforwarding - Fatal编程技术网

Python 应用程序端口转发中的Docker容器

Python 应用程序端口转发中的Docker容器,python,docker,iptables,portforwarding,Python,Docker,Iptables,Portforwarding,实际上,我正在尝试为Docker进行端口转发,Docker向远程服务器上的mysql数据库发出请求 我的目标是在一个容器中创建一个应用程序产品的副本,该容器可以访问基于远程MySQL服务器的现有MySQL服务器 我创建了一个Dockerfile,其中嵌入了所有需求,如下所示: FROM python:2.7-alpine mkdir /working_env RUN apk add --update mysql\ mysql-client\

实际上,我正在尝试为Docker进行端口转发,Docker向远程服务器上的mysql数据库发出请求

我的目标是在一个容器中创建一个应用程序产品的副本,该容器可以访问基于远程MySQL服务器的现有MySQL服务器

我创建了一个Dockerfile,其中嵌入了所有需求,如下所示:

FROM python:2.7-alpine

mkdir /working_env

RUN apk add --update mysql\
                mysql-client\
                python-dev\
                build-base \
                && rm -rf /var/cache/apk/*

# Requirements here
RUN pip install -r requirements.txt

WORKSPACE working_env

COPY init.sh .

# BIND TO 8053
RUN init.sh start
并使用映射到本地项目的卷运行此容器

docker run --name --rm project -v $(pwd):/working_env -d -p 8053:8053 project_docker
该调用以我的代码进行,如下所示:

conn = MySQLdb.connect(host=10.11.12.13, port=3000, passwd=foo, user=admin, db=default)
但我希望在从容器内部发出呼叫时,能够将其从
10.11.12.13:3000
替换为
10.11.12.13:3001

我找到了有关
iptables
的主题,并尝试创建规则,但为了转发此端口,我所有的尝试都失败了

sudo iptables -t nat -A PREROUTING -s 127.0.0.1 -p tcp --dport 3000 -j REDIRECT --to 3001

甚至有可能进行这种修改,或者这是从docker内部更改端口的另一种方式吗?

为什么不设置一个环境/应用程序变量“$MY_REMOTE_DB”,它正在docker build上设置?@Yerken这是个好主意,但我不想更改我的代码。如果我理解得很好,我需要使用这个ENV并将它绑定到我的代码。为什么不设置一个环境/应用程序变量“$my_REMOTE_DB”,它正在docker build上设置?@Yerken这是个好主意,但我不想修改我的代码。如果我理解得很好,我需要使用这个ENV并将它绑定到我的代码中。