docker-compose构建自定义Nginx镜像却运行默认容器问题咨询
问题排查与解决方案
核心触发原因
- 启动服务时未加
--build参数,docker-compose优先使用本地缓存的旧nginx/test镜像,若本地之前存在同名标签的默认Nginx镜像,会直接复用不会重新构建你修改后的自定义镜像 - docker-compose运行路径错误:你配置的nginx构建路径为
nginx(即docker-compose.yml同级的nginx子目录存放Dockerfile),若运行docker-compose up的工作目录不对,无法找到对应Dockerfile,docker-compose会直接拉取远程nginx/test镜像,拉取失败时会 fallback 到官方默认Nginx镜像 - 自定义镜像的
run.sh启动脚本异常:若脚本执行过程中报错未加载你的自定义Nginx配置、或是启动失败触发重启策略,会表现为默认Nginx的效果
修复步骤
- 先清理历史缓存的容器和镜像避免干扰:
docker-compose down -v docker rmi -f nginx/test
- 启动时强制重新构建镜像:
docker-compose up -d --build
- 验证容器是否为自定义镜像:
- 执行
docker inspect nginx | grep Image得到容器使用的镜像ID,再执行docker images nginx/test -q对比两个ID是否一致,一致则为你构建的自定义镜像 - 也可直接进入容器验证自定义文件是否存在:
docker exec -it nginx ls /etc/nginx/conf.d/,确认输出包含你传入的default.conf即可
- 执行
配置补充说明
- 你的需求要求配套MongoDB容器,当前docker-compose.yml中仅配置了MariaDB,需自行补充MongoDB对应的service配置
- WordPress服务的
container_name拼写错误(当前为wordress,缺少字母p),可自行修正避免后续维护混淆 - 需确认你的Nginx
default.conf配置符合路由要求:- 根路径
/指向容器内/var/www/html/test/index.html /wordpress路径配置fastcgi规则转发到wordpress:9000的php-fpm服务,同时正确配置SCRIPT_FILENAME参数指向WordPress文件目录
- 根路径
内容的提问来源于stack exchange,提问作者DarkSide77
相关产品推荐
相关产品推荐

