gpt4 book ai didi

docker - Docker:未在后台开始运行的Map端口

转载 作者:行者123 更新时间:2023-12-02 19:48:24 25 4
gpt4 key购买 nike

我有一个从8000端口开始的python docker容器。在用户交互之后,此过程在同一容器中的后台54321端口中的 h20 java进程开始。

这两个端口都在Dockerfile中公开:

FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
COPY requirements.txt /code/
RUN pip install -r requirements.txt
RUN apt update && apt install -y default-jre
EXPOSE 8000
EXPOSE 54321
COPY . /code/

两个端口都映射为 docker-compose.yml:

  backend:
image: xxxxx/xxx-backend
build: backend/xxx/.
ports:
- "8000:8000"
- "54321:54321"
environment:
- "KEY: value"
command: python manage.py runserver 0.0.0.0:8000
depends_on:
- db
networks:
- xxx

问题是:

当容器运行时,端口8000被映射,但是当我启动 h2o 服务器(它是python h2o.init())时,服务器启动并启动并运行(并且可以从容器内部的lynx到localhost:54321),但是映射不起作用。似乎 54321端口根本没有映射,因为它不在CMD或启动过程中。

即使未在容器启动时启动该进程, map 端口也有解决方案吗?

更新

这是我的 docker-compose ps:
     Name                   Command                State                          Ports                      
-------------------------------------------------------------------------------------------------------------
some_container_1 python manage.py runserver ... Up 0.0.0.0:54321->54321/tcp, 0.0.0.0:8000->8000/tcp

最佳答案

您可以尝试做的一件事是通过使用以下方法绕过网络化容器化来作弊:

network_mode: "host"

这是另一篇有关该讨论的stackoverflow文章:
  • Docker compose, running containers in net:host

  • 以及撰写文档的链接:
  • https://docs.docker.com/compose/compose-file/#network_mode

  • 因此,请尝试以下操作:
    backend:
    image: xxxxx/xxx-backend
    build: backend/xxx/.
    network_mode: "host"
    environment:
    - "KEY: value"
    command: python manage.py runserver 0.0.0.0:8000
    depends_on:
    - db
    networks:
    - xxx

    关于docker - Docker:未在后台开始运行的Map端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62262881/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com