Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 尝试在Laravel项目上构建docker compose时不支持的选项_Php_Laravel_Docker_Nginx_Docker Compose - Fatal编程技术网

Php 尝试在Laravel项目上构建docker compose时不支持的选项

Php 尝试在Laravel项目上构建docker compose时不支持的选项,php,laravel,docker,nginx,docker-compose,Php,Laravel,Docker,Nginx,Docker Compose,我下面安装并设置了与Docker Compose的Laravel。我想建立一个映像,可以用于任何具有预装软件依赖项的站点。然而,这是我第一次搬到Docker 我已将我的存储库作为我的FQDN克隆到我的/var/www。我的Laravel文件现在位于/var/www/example.co.uk中。我已更改了我的.env以使用DB_DATABASE=DB,并设置了我要使用的相应用户和密码 我的Dockerfile现在看起来像这样: FROM php:7.4-fpm # Arguments defi

我下面安装并设置了与Docker Compose的Laravel。我想建立一个映像,可以用于任何具有预装软件依赖项的站点。然而,这是我第一次搬到Docker

我已将我的存储库作为我的FQDN克隆到我的
/var/www
。我的Laravel文件现在位于
/var/www/example.co.uk
中。我已更改了我的
.env
以使用
DB_DATABASE=DB
,并设置了我要使用的相应用户和密码

我的
Dockerfile
现在看起来像这样:

FROM php:7.4-fpm

# Arguments defined in docker-compose.yml
ARG user
ARG uid

# Install system dependencies
RUN apt-get update && apt-get install -y \
    git \
    curl \
    libpng-dev \
    libonig-dev \
    libxml2-dev \
    zip \
    unzip

# Clear cache
RUN apt-get clean && rm -rf /var/lib/apt/lists/*

# Install PHP extensions
RUN docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd

# Get latest Composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer

# Create system user to run Composer and Artisan Commands
RUN useradd -G www-data,root -u $uid -d /home/$user $user
RUN mkdir -p /home/$user/.composer && \
    chown -R $user:$user /home/$user

# Set working directory
WORKDIR /var/www/example.co.uk

USER $user
version: "3.7"
services:
  app:
    build:
      args:
        user: iezonweb
        uid: 1001
      context: ./
      dockerfile: Dockerfile
    image: iezonweb
    container_name: iezonweb-app
    restart: unless-stopped
    working_dir: /var/www/example.co.uk
    volumes:
      - ./:/var/www/example.co.uk
    networks:
      - iezonweb

  db:
    image: mysql:5.7
    container_name: iezonweb-db
    restart: unless-stopped
    environment:
      MYSQL_DATABASE: ${DB_DATABASE}
      MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}
      MYSQL_PASSWORD: ${DB_PASSWORD}
      MYSQL_USER: ${DB_USERNAME}
      SERVICE_TAGS: dev
      SERVICE_NAME: mysql
    volumes:
      - ./docker-compose/mysql:/docker-entrypoint-initdb.d
    networks:
      - iezonweb

  nginx:
    image: nginx:alpine
    container_name: iezonweb-nginx
    restart: unless-stopped
    ports:
      - 8000:80
    volumes:
      - ./:/var/www/example.co.uk
      - ./docker-compose/nginx:/etc/nginx/conf.d/
    networks:
      - iezonweb

networks:
  iezonweb:
    driver: bridge
我的
docker compose.yml
现在看起来像这样:

FROM php:7.4-fpm

# Arguments defined in docker-compose.yml
ARG user
ARG uid

# Install system dependencies
RUN apt-get update && apt-get install -y \
    git \
    curl \
    libpng-dev \
    libonig-dev \
    libxml2-dev \
    zip \
    unzip

# Clear cache
RUN apt-get clean && rm -rf /var/lib/apt/lists/*

# Install PHP extensions
RUN docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd

# Get latest Composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer

# Create system user to run Composer and Artisan Commands
RUN useradd -G www-data,root -u $uid -d /home/$user $user
RUN mkdir -p /home/$user/.composer && \
    chown -R $user:$user /home/$user

# Set working directory
WORKDIR /var/www/example.co.uk

USER $user
version: "3.7"
services:
  app:
    build:
      args:
        user: iezonweb
        uid: 1001
      context: ./
      dockerfile: Dockerfile
    image: iezonweb
    container_name: iezonweb-app
    restart: unless-stopped
    working_dir: /var/www/example.co.uk
    volumes:
      - ./:/var/www/example.co.uk
    networks:
      - iezonweb

  db:
    image: mysql:5.7
    container_name: iezonweb-db
    restart: unless-stopped
    environment:
      MYSQL_DATABASE: ${DB_DATABASE}
      MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}
      MYSQL_PASSWORD: ${DB_PASSWORD}
      MYSQL_USER: ${DB_USERNAME}
      SERVICE_TAGS: dev
      SERVICE_NAME: mysql
    volumes:
      - ./docker-compose/mysql:/docker-entrypoint-initdb.d
    networks:
      - iezonweb

  nginx:
    image: nginx:alpine
    container_name: iezonweb-nginx
    restart: unless-stopped
    ports:
      - 8000:80
    volumes:
      - ./:/var/www/example.co.uk
      - ./docker-compose/nginx:/etc/nginx/conf.d/
    networks:
      - iezonweb

networks:
  iezonweb:
    driver: bridge
当我运行以下命令时:

$ docker-compose build app
我得到以下信息

ERROR: The Compose file './docker-compose.yml' is invalid because:
services.app.build contains unsupported option: 'container_name' error:
我查看了SO以找到任何相应的问题,这些问题导致我删除这一行。但是,它会因为另一个
不支持的选项而失败:image
,每次删除都会继续这个
不支持的选项链

任何帮助都将不胜感激

更新-我的docker和docker compose的当前版本如下:

$ docker-compose version

docker-compose version 1.27.4, build 40524192
docker-py version: 4.3.1
CPython version: 3.7.7
OpenSSL version: OpenSSL 1.1.0l  10 Sep 2019

$ sudo docker version

Client: Docker Engine - Community
 Version:           20.10.2
 API version:       1.41
 Go version:        go1.13.15
 Git commit:        2291f61
 Built:             Mon Dec 28 16:17:43 2020
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.2
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.13.15
  Git commit:       8891c58
  Built:            Mon Dec 28 16:15:19 2020
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.4.3
  GitCommit:        269548fa27e0089a8b8278fc4fc781d7f65a939b
 runc:
  Version:          1.0.0-rc92
  GitCommit:        ff819c7e9184c13b7c2607fe6c30ae19403a7aff
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

您的
docker compose.yml
中肯定存在缩进问题。YAML在很大程度上依赖于定义类似字典的结构

services.app.build包含不受支持的选项:“container\u name”

不知何故,
container\u name
被解析为
services.app.build
的子元素,这意味着错误出现在这个代码块周围:

services:
  app:
    build:
      args:
        user: iezonweb
        uid: 1001
      context: ./
      dockerfile: Dockerfile
    container_name: iezonweb-app
在本例中,它是正确的,因为
container\u name
app
的子元素。但是,
docker compose.yml
可能有一个小的缩进错误,例如:

services:
  app:
    build:
      args:
        user: iezonweb
        uid: 1001
      context: ./
      dockerfile: Dockerfile
      # Mind number of space: container_name is now sub-elements
      # of build - which is invalid
      container_name: iezonweb-app

确保您没有选项卡和空格的混合,这些选项卡和空格可能会被您的编辑器以不同的方式处理,并使某些元素显示在同一级别。

无法在本地复制。您的
docker compose版本是什么?
?您好,谢谢您的评论。我已经用我当前的版本更新了我的问题@anemythank you!这解决了我的问题,我不知道它需要正确缩进。谢谢你