Php 尝试在Laravel项目上构建docker compose时不支持的选项
我下面安装并设置了与Docker Compose的Laravel。我想建立一个映像,可以用于任何具有预装软件依赖项的站点。然而,这是我第一次搬到Docker 我已将我的存储库作为我的FQDN克隆到我的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
/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!这解决了我的问题,我不知道它需要正确缩进。谢谢你