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

Docker部署Lumen执行php artisan报php服务未运行容器#1错误

问题描述
  • 容器构建完成后执行docker-compose up -d启动无异常
  • 通过8100端口访问Lumen服务运行状态正常
  • 执行artisan CLI命令时报错,错误信息:Service "php" is not running container #1
  • 部署项目基于Lumen框架,此前使用操作系统为Windows
现有配置

docker-compose.yml

version: "3"

services:
  app:
    build:
      context: .
      dockerfile: Dockerfile
    image: appbilling-service
    container_name: appbilling-api
    volumes:
      - app-data:/var/www/html
      - ./docker/php/php.ini:/usr/local/etc/php/php.ini
    links:
      - db

  server:
    image: nginx:1.23-alpine
    container_name: appbilling-server
    ports:
      - 8100:80
    volumes:
      - app-data:/var/www/html
      - ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
    links:
      - app

  db:
    image: mysql:8
    container_name: mydb
    command: --default-authentication-plugin=mysql_native_password
    ports:
      - 33061:3306
    environment:
      MYSQL_DATABASE: appbilling_test
      MYSQL_USER: user
      MYSQL_PASSWORD: secret
      MYSQL_ROOT_PASSWORD: root
    volumes:
      - db-data:/var/lib/mysql
      - ./docker/mysql/my.cnf:/etc/mysql/my.cnf
      - ./docker/mysql/mysql.cnf:/etc/mysql/conf.d/mysql.cnf

volumes:
  db-data:
  app-data:

Dockerfile

FROM composer:2 as vendor

COPY ./database ./database
COPY ./tests ./tests

COPY composer.json composer.json
COPY composer.lock composer.lock

RUN composer install \
    --ignore-platform-reqs \
    --no-interaction \
    --no-plugins \
    --no-scripts \
    --prefer-dist


FROM php:7.4-fpm-alpine

COPY . /var/www/html
WORKDIR /var/www/html

COPY . .
COPY --from=vendor /app/vendor ./vendor/
COPY ./docker/php/php.ini:/usr/local/etc/php/php.ini

RUN apk add --no-cache \
    oniguruma-dev \
    mysql-client \
    libxml2-dev \
    # If you have enabled gd plugin
    # libpng-dev \
    # libjpeg-turbo-dev \
    # freetype-dev \
    git \
    zip \
    unzip \
    curl

RUN docker-php-ext-install \
    bcmath \
    mbstring \
    pdo \
    pdo_mysql \
    tokenizer \
    xml

# If you need to work with image manipulation.
# RUN docker-php-ext-configure gd --with-freetype --with-jpeg
# RUN docker-php-ext-install gd

RUN adduser www-data www-data

RUN chown -R www-data:www-data .

USER www-data

EXPOSE 9000

CMD ["php-fpm"]
故障原因

你的docker-compose.yml中没有定义名为php的服务,承载PHP运行环境(php-fpm)的服务被命名为app。执行artisan命令时如果沿用旧配置里的php服务名,docker-compose找不到对应运行中的容器,就会抛出该错误。
Web访问正常是因为nginx配置中正确关联了名为app的php-fpm服务,不依赖php这个服务名。

解决方法

二选一即可:

  • 执行artisan命令时指定正确的服务名app,命令格式如下:
    docker-compose exec app php artisan <你的artisan子命令>
    
    例如执行数据库迁移:
    docker-compose exec app php artisan migrate
    
  • 如果习惯使用php作为PHP服务的标识,可以修改docker-compose.yml,将原app:服务名修改为php:,同时把server服务配置块里links字段下的- app也同步改为- php,修改完成后执行docker-compose up -d重建容器生效,之后就可以用docker-compose exec php php artisan <子命令>的格式执行操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 18:06:25