首页 > 解决方案 > Docker-compose“没有这样的服务”

问题描述

docker-compose up -d使用这个 docker-compose.yml 文件启动时出错:没有这样的服务:php-c

它曾经工作,我没有改变任何东西。与此同时,我也没有任何 docker 更新。

如果我删除container_name密钥,那么我会显示与自动生成的名称相同的错误。

我正在使用 wsl2 和 docker 20.10.8。

version: '3'

services:
    db:
        image: mysql:5.7
        container_name: db-c
        ports:
            - 3307:3306
        volumes:
            - "./.data/db:/var/lib/mysql"
        environment:
            MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
            MYSQL_DATABASE: ${MYSQL_DATABASE}
            MYSQL_USER: ${MYSQL_USER}
            MYSQL_PASSWORD: ${MYSQL_PASSWORD}

    php:
        build:
            context: php7-fpm
            args:
                TIMEZONE: ${TIMEZONE}
                username: ${username}
        container_name: php-c
        volumes:
            - ${SYMFONY_APP_PATH}:/var/www/symfony
            - ./logs/symfony/:/var/www/symfony/var/logs
        environment:
            - XDEBUG_REMOTE_HOST=host.docker.internal
            - PHP_IDE_CONFIG=serverName=symfony.local
        user: 1000:1000

    nginx:
        build: nginx
        container_name: nginx-c
        ports:
            - 80:80
        volumes_from:
            - php
        volumes:
            - ./logs/nginx/:/var/log/nginx

这是 Dockerfile。

# See https://github.com/docker-library/php/blob/master/7.1/fpm/Dockerfile
FROM php:7.3-fpm
ARG TIMEZONE
ARG username=bastien

MAINTAINER Maxence POUTORD <maxence.poutord@gmail.com>

RUN apt-get update && apt-get install -y \
    openssl \
    git \
    unzip \
    libicu-dev \
    sudo \
    lsof \
    zlib1g-dev \
    libzip-dev \
    iputils-ping

# Install GD
RUN apt-get update && apt-get install -y \
        libfreetype6-dev \
        libjpeg62-turbo-dev \
        libpng-dev \
    && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
    && docker-php-ext-install -j$(nproc) gd

# Install Composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
RUN composer --version

# Set timezone
RUN ln -snf /usr/share/zoneinfo/${TIMEZONE} /etc/localtime && echo ${TIMEZONE} > /etc/timezone
RUN printf '[PHP]\ndate.timezone = "%s"\n', ${TIMEZONE} > /usr/local/etc/php/conf.d/tzone.ini
RUN "date"

# Type docker-php-ext-install to see available extensions
RUN docker-php-ext-install pdo pdo_mysql zip


# install xdebug
RUN pecl install xdebug
RUN docker-php-ext-enable xdebug
RUN cd /usr/local/etc/php/conf.d/ && \
  echo 'memory_limit = 1G' >> /usr/local/etc/php/conf.d/docker-php-memlimit.ini
COPY xdebug.ini /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
#RUN echo "error_reporting = E_ALL" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \
# & echo "display_startup_errors = On" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \
# & echo "display_errors = On" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \
# & echo "xdebug.remote_enable=1" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \
# & echo "xdebug.remote_connect_back=1" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \
# & echo "xdebug.idekey=\"PHPSTORM\"" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \
# & echo "xdebug.remote_port=9001" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini

# CREATE USER FOR $username

RUN useradd --create-home --shell /bin/bash -u 1000 $username

USER $username

RUN mkdir /home/$username/.ssh \
&& chmod 700 /home/$username/.ssh 

COPY .bashrc /home/$username/.bashrc
COPY config /home/$username/.ssh/config


WORKDIR /var/www/symfony

[编辑]
当我使用重启时,这有效......我真的不明白发生了什么。

docker-compose restart

标签: dockerdocker-compose

解决方案


我有同样的问题。
看来volumes_from配置是问题的根源。(可能是一个 docker-compose 错误)

替换volumes_fromvolumes我做了诀窍。

尝试将以下内容用于您的 nginx 服务配置:

    nginx:
        build: nginx
        container_name: nginx-c
        ports:
            - 80:80
        volumes:
            - ${SYMFONY_APP_PATH}:/var/www/symfony
            - ./logs/symfony/:/var/www/symfony/var/logs
            - ./logs/nginx/:/var/log/nginx

推荐阅读