Docker Compose在Windows正常运行但Ubuntu下异常,求排查解决
问题:Docker容器在Windows正常运行,Ubuntu下出现502错误
相同的Docker容器配置在Windows环境可正常运行,但在Ubuntu环境下访问出现502 Bad Gateway错误。
Windows下docker-compose ps输出:
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS Laravel_nginx nginx:stable-alpine "/docker-entrypoint.…" nginx 2 days ago Up 21 seconds 0.0.0.0:8000->80/tcp Laravel_php dockerized-laravel-8-vue3-typescript-php "docker-php-entrypoi…" php 2 days ago Up 22 seconds 0.0.0.0:9001->9000/tcp
Ubuntu下docker-compose ps输出:
Name Command State Ports ----------------------------------------------------------------------------------------- laravel_nginx docker-php-entrypoint php-fpm Up 0.0.0.0:8080->80/tcp, 9000/tcp laravel_php docker-php-entrypoint php-fpm Up 9000/tcp
附docker-compose.yaml配置:
version: '3' networks: webapp: services: nginx: image: nginx:stable-alpine container_name: ${APP_NAME}_nginx ports: - "8080:80" links: - php volumes: - ./:/var/www/html - ./docker/nginx/site.conf:/etc/nginx/conf.d/default.conf:rw - ./docker/logs/nginx:/var/logs/nginx:rw depends_on: - php networks: - webapp php: build: context: . dockerfile: Dockerfile container_name: ${APP_NAME}_php volumes: - ./:/var/www/html ports: - "9001:9000" networks: - webapp
问题分析与解决步骤:
从输出可见,Ubuntu环境下的nginx容器执行了错误的命令——本该运行nginx启动指令,却执行了php-fpm的命令,这说明nginx容器的镜像可能被错误覆盖。
- 清理旧容器与镜像,避免缓存干扰:
docker-compose down -v docker rmi nginx:stable-alpine dockerized-laravel-8-vue3-typescript-php
- 重新构建并启动服务:
docker-compose build --no-cache docker-compose up -d
- 检查Ubuntu环境下的
APP_NAME环境变量,确保容器命名无冲突,避免镜像混淆 - 验证nginx配置文件
docker/nginx/site.conf,确认其中指向php服务的端口为php:9000(同一网络下无需依赖主机端口映射)
内容的提问来源于stack exchange,提问作者shaher11
相关产品推荐
相关产品推荐

