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_Docker Compose_Dockerfile - Fatal编程技术网

Docker容器无法解析主机名

Docker容器无法解析主机名,docker,docker-compose,dockerfile,Docker,Docker Compose,Dockerfile,我正在创建一个docker-compose.yaml文件,该文件必须使用我正在编写的开发应用程序创建一个pypi本地存储库和一个容器。问题是,尽管我已经创建了自定义网络并指定了主机名,但容器之间无法相互看到 更具体地说,pypi必须启动并运行;在测试期间,我手动运行了它,msalembic应该使用本地pypi存储库来加载鸡蛋。但是我看不到pypi主机 version: '3' services: # Alembic MS msalembic: build: conte

我正在创建一个docker-compose.yaml文件,该文件必须使用我正在编写的开发应用程序创建一个pypi本地存储库和一个容器。问题是,尽管我已经创建了自定义网络并指定了主机名,但容器之间无法相互看到

更具体地说,pypi必须启动并运行;在测试期间,我手动运行了它,msalembic应该使用本地pypi存储库来加载鸡蛋。但是我看不到pypi主机

version: '3'
services:
  # Alembic MS
  msalembic:
    build:
      context: .
      dockerfile: AlembicMSDockerfile
    ports:
      - "5432:5432"
    hostname: alembicms
    volumes:
      - "${PWD}/msalembic/postgres/psql_data:/var/lib/postgresql/data"
    environment:
      POSTGRES_USER: ${PGUSER}
      POSTGRES_PASSWORD: ${PGPASSWORD}
      POSTGRES_DB: goodboy
      ENVIRONMENT: ${ENVIRONMENT}
    networks:
      - custom_network
    depends_on:
        - pypi
  # Private internal Pypi repository
  pypi:
    build:
        context: pypi
        dockerfile: Dockerfile
        args:
          HTACCESS: ${HTACCESS}
    hostname: pypi
    volumes:
      - "${PWD}/pypi/:/srv/pypi:rw"
    ports:
      - "9090:80"
    container_name: pypi
    networks:
      - custom_network
networks:
  custom_network:
AlembicMSDockerfile的内容:

FROM python:3.6
MAINTAINER Bruno Ripa <XXX>
#RUN pip install -f http://pypi:9090 --trusted-host pypi alembicms
RUN ping pypi
ENTRYPOINT ["alembicms"]
来自python:3.6的

维护者布鲁诺·里帕
#运行pip安装-fhttp://pypi:9090 --可信主机pypi-alembicms
润平平派
入口点[“alembicms”]
当然,我可以在本地pypi存储库中浏览和发布包


谢谢。

您指定的端口映射仅在容器的端口暴露于主机网络时才相关(例如,如果您希望通过
从主机访问它们)http://localhost:9090

链接docker网络内的容器时,服务将在
Dockerfile
中定义的端口上公开。因此,根据您的端口映射,
pypi
容器公开端口80,当您希望从同一docker网络中的另一个容器访问它时,也应该使用端口80

因此,当您运行AlembicMSDockerfile的构建的映像时,您可以通过docker网络访问端口80上的pypi容器。在您的特殊情况下,您希望在alembic ms映像的构建期间已经访问pypi容器。这在docker compose中目前不受支持,您可以从中读取


只要没有发布,您就可以自己运行pypi容器并使用
docker build--net=host--add host=pypi_on_host:--file=AlembicMSDockerfile
,然后修改run命令以使用
http://pypi_on_host:9090
(您需要映射端口的地方,因为您不再使用docker内部网络访问该端口)。虽然不是很优雅,但至少Dockerfile中没有直接引用您的主机IP…

谢谢您的评论,我会尽快尝试并给出反馈!