Laravel 为什么我的Docker卷只共享Docker compose文件?
我正在尝试使用Docker Compose将Laravel应用程序容器化,但我无法使用共享卷来导入实际的项目应用程序文件。我的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
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,这让它起作用了——不幸的是,我不知道为什么。谢谢你的帮助。