Docker多个端口(前端和后端)不起作用

时间:2020-05-29 10:42:33

标签: docker nginx jenkins dockerfile

我是Docker和CI的新手,所以请不要烤我:)

我在Linode上,我想在同一服务器上运行frontend(react)和backend(python)。除非您告诉我这是错误的方法,否则两者都将位于单独的端口上。

现在,我在端口8081上运行Jenkins,并且有两个单独的作业:

后端詹金斯:

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

当我使用端口5000打开Linode的IP时,后端工作正常,但是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')

1 个答案:

答案 0 :(得分:0)

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服务的一个实例,因为我们不希望另一个实例阻塞端口。