Docker容器无法parsing主机名
我正在创build一个docker-compose.yaml文件,该文件必须创build一个pypi本地存储库和一个包含我正在编写的开发应用程序的容器。 问题是,尽pipe我已经创build了自定义networking和指定的主机名,但是容器却看不到对方。
更具体地说,pypi必须启动并运行; 在我的testing中,我手动运行它,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"]
当然,我可以在本地pypi存储库中浏览和发布软件包。
谢谢。
您指定的端口映射仅在容器的端口暴露于主机networking(例如,如果要通过http://localhost:9090
从您的主机访问它们)时才相关。
当连接Dockerfile
networking中的容器时,服务将显示在Dockerfile
定义的端口上。 因此,根据您的端口映射, pypi
容器将显示端口80,当您想从同一个dockernetworking中的另一个容器访问端口时,也应该使用端口80。
因此,当您运行AlembicMSDockerfile的内置映像时,您可以通过dockernetworking访问端口80上的pypi容器。 在你的特殊情况下,你想在alembic ms镜像的编译时间内访问pypi容器。 目前在Docker-compose中不支持,因为您可以从这里的问题阅读。
只要不释放,你可以自己运行pypi容器并使用docker build --net=host --add-host=pypi_on_host:<yourhostip> --file=AlembicMSDockerfile
,然后修改RUN命令使用http://pypi_on_host:9090
(您需要映射的端口,因为您不再使用docker内部networking访问它)。 不是很优雅,但是至less在Dockerfile中没有直接引用你的主机IP地址。
- iptablesredirect到docker容器中的不同host / tproxy
- 如何将Docker镜像从一台主机复制到另一台上而不需要通过存储库?
- 你如何退出docker – 组成了@ macOS?
- 在Docker中运行Prestashop时,后台中的ERR_TOO_MANY_REDIRECTS
- docker集装箱是否足够安全地与生产系统并排运行第三方不受信任的集装箱?
- 访问链接的Docker中的环境variables
- 在一个容器中运行nginx以代理在另一个容器中传递Gitlab
- Docker Hub在自动构build中超时
- 如何从Cloud Formation获得Elastic Container Repository URI?