Python 应用程序端口转发中的Docker容器
实际上,我正在尝试为Docker进行端口转发,Docker向远程服务器上的mysql数据库发出请求 我的目标是在一个容器中创建一个应用程序产品的副本,该容器可以访问基于远程MySQL服务器的现有MySQL服务器 我创建了一个Dockerfile,其中嵌入了所有需求,如下所示: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\
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并将它绑定到我的代码中。