Docker多个端口(前端和后端)不工作
我是Docker和CI的新手,所以请不要问我:) 我在Linode上,我希望在同一台服务器上运行前端(react)和后端(python)。除非你告诉我这是一个错误的方法,否则这两个端口将在不同的端口上 现在,我在端口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
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