You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker部署Laravel遇web_1容器找不到及日志异常问题求助

问题描述

使用Docker部署Laravel项目时遇到以下问题:

  1. 执行docker-compose exec web bash提示No container found for web_1
  2. web和admin_queue容器日志仅输出Interactive shell,重启容器后问题依旧
  3. docker-compose up -d --build构建成功,但无法正常进入容器

提供的配置文件

docker-compose.yml

version: '3.7'
services:
  web:   # I USE THIS NAME IN docker-compose command
    container_name: banners_web
    build:
      context: .
      dockerfile: Dockerfile
    volumes:
      - .:/app
    ports:
      - 8000:8000
    depends_on:
      - AdminRMQBannersDb

  admin_queue:
    container_name: banners_admin_queue
    build:
      context: .
      dockerfile: Dockerfile
    depends_on:
      - AdminRMQBannersDb

  AdminRMQBannersDb:
    container_name: banners_db
    image: mysql:5.7.22
    environment:
      MYSQL_DATABASE: AdminRMQBannersDb
      MYSQL_USER: root
      MYSQL_PASSWORD: root
      MYSQL_ROOT_PASSWORD: root
    volumes:
      - ./storage/dbdata:/var/lib/mysql
    ports:
      - 33063:3306

Dockerfile

FROM php:8.0

RUN apt-get update && apt-get install -y \
libfreetype6-dev \
libjpeg62-turbo-dev \
libmcrypt-dev \
libpng-dev \
zlib1g-dev \
libxml2-dev \
libzip-dev \
libonig-dev \
graphviz \

&& docker-php-ext-configure gd \
&& docker-php-ext-install -j$(nproc) gd \
&& docker-php-ext-install pdo_mysql \
&& docker-php-ext-install mysqli \
&& docker-php-ext-install zip \
&& docker-php-ext-install sockets \
&& docker-php-ext-install exif \
&& docker-php-source delete \
&& curl -sS https://getcomposer.org/installer | php -- \
--install-dir=/usr/local/bin --filename=composer

WORKDIR /app
COPY . .
RUN composer install

问题原因与解决方法

1. No container found for web_1 问题

你给web容器指定了自定义名称banners_web,而docker-compose exec web bash默认会查找服务名加默认后缀(如web_1)的容器,两者不匹配导致报错。解决方式:
使用自定义容器名执行进入命令:

docker-compose exec banners_web bash
# 或直接用docker命令
docker exec -it banners_web bash

2. 容器日志显示Interactive shell且无法长期运行

官方php:8.0镜像默认启动命令是进入交互式shell,当用-d后台启动时,没有终端交互,容器会立刻退出,因此仅输出Interactive shell日志。需要给web和admin_queue服务指定持续运行的启动命令:

修改docker-compose.yml:

给web服务添加Laravel内置服务器启动命令,给admin_queue添加队列启动命令:

version: '3.7'
services:
  web:
    container_name: banners_web
    build:
      context: .
      dockerfile: Dockerfile
    volumes:
      - .:/app
    ports:
      - 8000:8000
    depends_on:
      - AdminRMQBannersDb
    # 启动Laravel内置服务器,保持容器运行
    command: php artisan serve --host=0.0.0.0 --port=8000

  admin_queue:
    container_name: banners_admin_queue
    build:
      context: .
      dockerfile: Dockerfile
    depends_on:
      - AdminRMQBannersDb
    # 启动Laravel队列进程
    command: php artisan queue:work

  AdminRMQBannersDb:
    container_name: banners_db
    image: mysql:5.7.22
    environment:
      MYSQL_DATABASE: AdminRMQBannersDb
      MYSQL_USER: root
      MYSQL_PASSWORD: root
      MYSQL_ROOT_PASSWORD: root
    volumes:
      - ./storage/dbdata:/var/lib/mysql
    ports:
      - 33063:3306

3. 额外优化建议

  • 优化Dockerfile缓存:调整文件复制顺序,先复制依赖配置文件,再安装依赖,最后复制项目代码,避免每次修改代码都重新安装composer依赖:
FROM php:8.0

RUN apt-get update && apt-get install -y \
libfreetype6-dev \
libjpeg62-turbo-dev \
libmcrypt-dev \
libpng-dev \
zlib1g-dev \
libxml2-dev \
libzip-dev \
libonig-dev \
graphviz \
&& docker-php-ext-configure gd \
&& docker-php-ext-install -j$(nproc) gd \
&& docker-php-ext-install pdo_mysql \
&& docker-php-ext-install mysqli \
&& docker-php-ext-install zip \
&& docker-php-ext-install sockets \
&& docker-php-ext-install exif \
&& docker-php-source delete \
&& curl -sS https://getcomposer.org/installer | php -- \
--install-dir=/usr/local/bin --filename=composer

WORKDIR /app
# 先复制依赖配置文件,缓存composer安装步骤
COPY composer.json composer.lock ./
RUN composer install --no-dev --optimize-autoloader
# 再复制整个项目文件
COPY . .
  • 配置Laravel环境变量:确保.env文件中数据库连接地址为AdminRMQBannersDb(docker-compose中数据库服务名即为容器hostname)。

4. 验证解决效果

执行以下命令重新构建并启动容器:

docker-compose down
docker-compose up -d --build

查看容器运行状态:

docker-compose ps

确认web和admin_queue容器处于Up状态后,即可正常进入容器操作。

内容的提问来源于stack exchange,提问作者mstdmstd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 14:53:25