Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.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
Laravel 为什么我的Docker卷只共享Docker compose文件?_Laravel_Docker_Docker Compose - Fatal编程技术网

Laravel 为什么我的Docker卷只共享Docker compose文件?

Laravel 为什么我的Docker卷只共享Docker compose文件?,laravel,docker,docker-compose,Laravel,Docker,Docker Compose,我正在尝试使用Docker Compose将Laravel应用程序容器化,但我无法使用共享卷来导入实际的项目应用程序文件。我的docker compose文件如下所示: version: "3.7" services: app: build: args: user: sam uid: 1000 context: ./ dockerfile: Dockerfile image: co

我正在尝试使用Docker Compose将Laravel应用程序容器化,但我无法使用共享卷来导入实际的项目应用程序文件。我的docker compose文件如下所示:

    version: "3.7"
services:
  app:
    build:
      args:
        user: sam
        uid: 1000
      context: ./
      dockerfile: Dockerfile
    image: converter
    container_name: converter-app
    restart: unless-stopped
    working_dir: /var/www/
    volumes:
      - ./:/var/www
    networks:
      - converter

  db:
    image: mysql:5.7
    container_name: converter-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:
      - converter

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

networks:
  converter:
    driver: bridge

volumes:
  app-volume:
以及应用程序服务的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
#RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=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

USER $user
然后,我运行
docker compose build app
docker compose up-d
来创建容器,从而将它们带出。当我使用
docker compose exec app ls-l
检查应用程序容器的/var/www文件夹时,唯一显示的文件是docker compose文件:

links:
  - nginx
depends_on:
  - nginx

为应用程序服务指定的共享卷不应该在app/var/www文件夹中共享我的工作目录吗


您需要将这些配置选项添加到compose文件中的应用程序服务中:

links:
  - nginx
depends_on:
  - nginx

这些选项迫使docker compose首先创建nginx服务,在应用程序之后,这是必要的,因为当前nginx是在应用程序之后创建的,在docker-compose.yml中覆盖/var/www目录

我似乎不需要
卷:app volume:
,因为没有使用它我在尝试另一种方式时意外地将它保留了下来-我现在已经删除了,谢谢,我已经添加了它们,但它仍然只显示了一些文件,甚至是一个不再在目录中的项目文件夹?请尝试重新安装docker和docker compose,因为现在我使用您的docker-compose.yml和docker文件构建环境,并且工作正常:
链接:
在现代docker中几乎什么都不做,
取决于:
对问题中描述的卷装载问题没有帮助。我已卸载并重新安装了docker,这让它起作用了——不幸的是,我不知道为什么。谢谢你的帮助。