Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.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
Docker多个端口(前端和后端)不工作_Docker_Nginx_Jenkins_Dockerfile - Fatal编程技术网

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

Docker多个端口(前端和后端)不工作,docker,nginx,jenkins,dockerfile,Docker,Nginx,Jenkins,Dockerfile,我是Docker和CI的新手,所以请不要问我:) 我在Linode上,我希望在同一台服务器上运行前端(react)和后端(python)。除非你告诉我这是一个错误的方法,否则这两个端口将在不同的端口上 现在,我在端口8081上运行Jenkins,并有两个单独的作业: 詹金斯: IMAGE = "my_docker_flask:latest" image = docker.build("${IMAGE}"); def container = image.run('-p 5000:5000') de

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

我在Linode上,我希望在同一台服务器上运行前端(react)和后端(python)。除非你告诉我这是一个错误的方法,否则这两个端口将在不同的端口上

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

詹金斯:

IMAGE = "my_docker_flask:latest"
image = docker.build("${IMAGE}");
def container = image.run('-p 5000:5000')
def contport = container.port(5000)
IMAGE = "reactapp"
image = docker.build("${IMAGE}")
def container = image.run('-p 6000:6000')
def contport = container.port(6000)
后端Dockerfile(flask):

前端詹金斯:

IMAGE = "my_docker_flask:latest"
image = docker.build("${IMAGE}");
def container = image.run('-p 5000:5000')
def contport = container.port(5000)
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

仔细观察,我们可以知道您的
reactapp
服务正在集装箱内的
80号港提供。但是您正在尝试将容器中的端口
6000
映射到外部的端口
6000
。当然,您将无法访问一个根本没有服务的服务

此外,无法访问
此站点的原因-ERR_UNSAFE_PORT
是因为您使用的端口
6000
受Chrome浏览器的限制

解决方案:

  • 仅映射端口80,而不映射正在服务的任何其他端口
  • 停止使用端口80的所有其他服务
  • 只有一个
    reactapp
    服务实例,因为我们不希望另一个实例阻塞端口
仔细观察,我们可以知道您的
reactapp
服务正在集装箱内的
80号港提供。但是您正在尝试将容器中的端口
6000
映射到外部的端口
6000
。当然,您将无法访问一个根本没有服务的服务

此外,无法访问
此站点的原因-ERR_UNSAFE_PORT
是因为您使用的端口
6000
受Chrome浏览器的限制

解决方案:

  • 仅映射端口80,而不映射正在服务的任何其他端口
  • 停止使用端口80的所有其他服务
  • 只有一个
    reactapp
    服务实例,因为我们不希望另一个实例阻塞端口

您能否详细说明
不起作用
您是否无法路由到react应用程序服务,以及您可以在此处添加的任何日志和错误。构建文件夹是否包含HTML文件等静态工件?当我点击
mylinodeip:6000
时,我在浏览器中无法访问
此站点。如何查找或检查服务器上的生成文件夹文件?它应该只是静态文件。但它在本地有效。我知道你的问题,如果它对你有效,我会把它作为答案发布。首先,您不能在浏览器上使用
mylinodeip
作为主机,因为只有网络中的容器才能通过该主机名进行访问。我可以看到你将端口暴露在外面,所以请尝试使用
localhost:6000
希望它能工作:)我认为这是一个误解,我可以在
mylinodeip:5000
上点击并看到我的
python
应用程序在网络浏览器中工作,但是
mylinodeip:6000
mylinodeip:3333
不工作,我收到消息
无法访问此站点-错误\u不安全\u端口
与我的本地主机无关我知道了:)
80/tcp,0.0.0.0:6000->6000/tcp
遵守这一点,因此基本上您的应用程序在端口80上有Nginx,但您正在将端口6000从容器映射到外部。因此,请尝试在端口80上捕获您的服务,并映射相同的端口。您能否详细说明
不起作用
您是否无法路由到react app服务、任何日志以及您可以在此处添加的错误。构建文件夹是否包含HTML文件等静态工件?当我点击
mylinodeip:6000
时,我在浏览器中无法访问
此站点。如何查找或检查服务器上的生成文件夹文件?它应该只是静态文件。但它在本地有效。我知道你的问题,如果它对你有效,我会把它作为答案发布。首先,您不能在浏览器上使用
mylinodeip
作为主机,因为只有网络中的容器才能通过该主机名进行访问。我可以看到你将端口暴露在外面,所以请尝试使用
localhost:6000
希望它能工作:)我认为这是一个误解,我可以在
mylinodeip:5000
上点击并看到我的
python
应用程序在网络浏览器中工作,但是
mylinodeip:6000
mylinodeip:3333
不工作,我收到消息
无法访问此站点-错误\u不安全\u端口
与我的本地主机无关我知道了:)
80/tcp,0.0.0.0:6000->6000/tcp
遵守这一点,因此基本上您的应用程序在端口80上有Nginx,但您正在将端口6000从容器映射到外部。因此,请尝试在端口80上捕获您的服务,并映射相同的端口。
80/tcp, 0.0.0.0:6000->6000/tcp