如何通过Docker Compose从本地运行的私有Nexus镜像仓库拉取镜像
解决Docker Compose从本地Nexus私有仓库拉取镜像的问题
我来帮你搞定这个问题——你遇到的核心问题是当docker-compose.yml里同时存在build和image字段时,Docker Compose会优先执行镜像构建,而不是直接拉取你指定的私有仓库镜像。
问题根源
你当前的配置里包含build节点,这会告诉Compose:"我要从当前目录的Dockerfile构建一个镜像,然后把它打上127.0.0.1:8123/node-web-app:latest的标签"。所以哪怕你已经在私有仓库里推了这个镜像,Compose还是会走构建流程,而不是拉取。
解决方案:移除构建配置,仅保留镜像地址
把docker-compose.yml里的build相关配置删掉,只保留image字段及其他容器运行配置,这样Compose就会尝试从你的Nexus仓库拉取镜像了。修改后的配置如下:
services: frontapp1: image: localhost:8123/node-web-app:latest container_name: nodejs restart: unless-stopped ports: - "49160:8080"
额外确认点
你关于Nexus端口的猜测是对的:Nexus的UI端口(8081)和镜像仓库的端口(8123)是分开配置的,拉取镜像确实应该用8123端口——你已经通过docker pull localhost:8123/node-web-app:mytag成功拉取,说明这个地址完全没问题,不用改用8081。
可选的清理步骤(如果需要)
如果你之前已经通过docker-compose build或者本地Dockerfile构建过同名的镜像,可能需要先清理本地的镜像缓存,确保Compose从私有仓库拉取而不是使用本地镜像:
docker rmi localhost:8123/node-web-app:latest
之后再执行docker-compose up,就能看到Compose从你的Nexus仓库拉取镜像并启动容器了。
内容的提问来源于stack exchange,提问作者mr.Gray
相关产品推荐
相关产品推荐

