docker - Docker 多个端口(前端和后端)不起作用
问题描述
我对 Docker 和 CI 很陌生,所以请不要烧烤我 :)
我在 Linode 上,我想在同一台服务器上运行前端(反应)和后端(python)。两者都将在不同的端口上,除非您告诉我这是错误的方法。
现在,我在端口上运行 Jenkins8081
并有两个单独的工作:
后端詹金斯:
IMAGE = "my_docker_flask:latest"
image = docker.build("${IMAGE}");
def container = image.run('-p 5000:5000')
def contport = container.port(5000)
后端 Dockerfile(烧瓶):
FROM python:2.7
WORKDIR app
COPY . .
RUN pip install -r requirements.txt
ENTRYPOINT ["python"]
CMD ["app.py"]
前端詹金斯:
IMAGE = "reactapp"
image = docker.build("${IMAGE}")
def container = image.run('-p 6000:6000')
def contport = container.port(6000)
前端 Dockerfile:
FROM nginx
COPY build /var/www
当我用端口打开我的 Linode 的 IP5000
但它6000
不起作用时,后端工作正常。我什至尝试过,3333
但这也不起作用。
这是我的docker ps -a
:
reactapp "nginx -g 'daemon of…" 41 seconds ago Up 40 seconds 80/tcp, 0.0.0.0:6000->6000/tcp
reactapp "nginx -g 'daemon of…" 2 days ago Up 2 days 80/tcp, 0.0.0.0:3333->3333/tcp
my_docker_flask:latest "python app.py" 2 days ago Up 2 days 0.0.0.0:5000->5000/tcp
可以请人帮助我吗?
如何使用相同的 IP 在不同的端口上运行多个应用程序?
编辑
我已修复它,但更改为以下内容:
COPY build /usr/share/nginx/html
和
def container = image.run('-p 5000:80')
解决方案
80/tcp, 0.0.0.0:6000->6000/tcp
仔细看,我们可以知道您的reactapp
服务正在80
集装箱内的港口提供服务。但是您正在尝试将6000
容器中的端口映射到6000
外部端口。当然,您将无法访问根本不提供服务的服务。
另外,背后的原因This site can’t be reached - ERR_UNSAFE_PORT
是因为您使用的6000
是受 Chrome 浏览器限制的端口。
解决方案:
- 仅映射端口 80,而不是任何其他端口,因为它正在提供服务。
- 停止使用端口 80 的所有其他服务
- 只有一个
reactapp
服务实例,因为我们不希望另一个实例阻塞端口。
推荐阅读
- javascript - 倒计时钩每分钟损失 1 秒
- mysql - 创建mysql过程时出现错误1310
- linux - 在文本文件中添加 Control M 字符
- user-interface - 如何在 PostScript 中制作基本的 GUI 应用程序
- sql - SSIS:使用变量作为平面文件目标的名称
- ios - 快速重新加载表视图后表视图未更新
- java - 当使用 Apache Commons VFS 进行 SFTP 上传时,必须面对 org.apache.commons.vfs2.FileSystemException:找不到带有 URI 的文件
- javascript - 未捕获的 TypeError:answer.appendChild 不是函数
- dialogflow-es - 您可以在 Stackdriver 中按 Dialogflow 代理环境进行过滤吗?
- java - 如何使用 java.sql.Timestamp 减去日期