我是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')
答案 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浏览器的限制。
解决方案:
reactapp
服务的一个实例,因为我们不希望另一个实例阻塞端口。