Docker容器无法解析主机名
我正在创建一个docker-compose.yaml文件,该文件必须使用我正在编写的开发应用程序创建一个pypi本地存储库和一个容器。问题是,尽管我已经创建了自定义网络并指定了主机名,但容器之间无法相互看到 更具体地说,pypi必须启动并运行;在测试期间,我手动运行了它,msalembic应该使用本地pypi存储库来加载鸡蛋。但是我看不到pypi主机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
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…谢谢您的评论,我会尽快尝试并给出反馈!