运行vhosts时遇Docker错误:镜像引用格式无效,仓库名需小写
问题分析与解决
报错根源
你执行的docker run命令参数顺序错误:-e(环境变量参数)必须放在镜像名称之前,你把镜像名jwilder/nginx-proxy放在了-e后面,导致Docker误将VIRTUAL_HOST=myadd.dev识别为镜像名,而其中的大写字母违反了镜像名必须小写的规则,触发报错。
正确命令示例
由于你已经通过docker-compose启动了jwilder/nginx-proxy容器(容器ID:b1467ba0f2ae),无需重复启动它。如果要新增一个绑定myadd.dev域名的服务容器,正确的docker run命令格式应为:
docker run -e VIRTUAL_HOST=myadd.dev [你的服务镜像名]
替换[你的服务镜像名]为你实际要部署的业务服务镜像(比如nginx、php-fpm等)。
更规范的扩展方式(推荐)
从你的docker-compose.yml配置来看,已有一套基于nginx-proxy的本地反向代理环境。新增myadd.dev服务更推荐通过修改docker-compose配置来实现,避免零散管理容器:
修改后的docker-compose.yml:
version: '2' services: nginx-proxy: image: jwilder/nginx-proxy container_name: nginx-proxy ports: - 80:80 - 443:443 volumes: - /var/run/docker.sock:/tmp/docker.sock:ro - ~/.certs:/etc/nginx/certs # 建议用通配符域名SSL证书简化本地流程,比如localhost.key和localhost.crt nginx-localhost: build: context: . dockerfile: Dockerfile container_name: nginx-localhost volumes: - ~/Sites:/usr/share/nginx/html:ro environment: - VIRTUAL_HOST=localhost - HTTPS_METHOD=noredirect # 若存在自签名证书,避免强制HTTPS重定向 # 新增myadd.dev服务 nginx-myadd: build: context: . dockerfile: Dockerfile # 可根据实际需求调整镜像或构建规则 container_name: nginx-myadd volumes: - ~/Sites/myadd:/usr/share/nginx/html:ro # 挂载对应站点目录 environment: - VIRTUAL_HOST=myadd.dev - HTTPS_METHOD=noredirect networks: default: external: name: local-nginx-rproxy
修改后执行以下命令启动新增服务:
docker-compose up -d
最后在本地hosts文件中添加解析:
127.0.0.1 myadd.dev
内容的提问来源于stack exchange,提问作者woninana
相关产品推荐
相关产品推荐

