使用命名卷

时间:2019-08-31 11:15:26

标签: laravel docker docker-compose

我正在使用 docker-compose 3.7 Laravel 5.8 的重要安装进行一些测试。 我的目标是在nginx和php服务容器之间共享我的Laravel应用程序卷app-vol。 我尝试如下进行操作,但失败了。

我的docker-compose.yml有以下几行:

    version:  '3.7'
    services:
        nginx:
            container_name: laravel_nginx
            image: nginx:1.15.3-alpine
            restart: unless-stopped
            volumes:
                - './docker/nginx/default.conf:/etc/nginx/conf.d/default.conf:ro'
                - 'app-vol:/usr/src/app:rw'
            ports:
                - "8000:80"
        mysql:
            container_name: laravel_mysql
            image: mysql:5
            restart: unless-stopped
            ports:
                - "3330:3306"
            env_file:
                - .env
        php:
            container_name: laravel_php
            build:
                context: .
                dockerfile: Dockerfile
            volumes:
                - './docker/xdebug/xdebug.ini:/usr/local/etc/php/conf.d/xdebug.ini:ro'
                - './docker/php/php.ini:/usr/local/etc/php/php.ini:ro'
                - 'app-vol:/usr/src/app:rw'
            env_file:
                - .env
            depends_on:
                - mysql
                - nginx

    volumes:
      app-vol:

这是我的Dockerfile。

FROM php:7.2-fpm-alpine

RUN apk update && apk add --no-cache \
    mysql-client \
    libpng-dev \
    jpegoptim optipng pngquant gifsicle \
    vim \
    unzip \
    git \
    curl

RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer \
    && rm -rf /tmp/*

COPY --chown=www-data:www-data . /usr/src/app

WORKDIR /usr/src/app

RUN composer install --no-progress --no-suggest --no-interaction

我用docker-compose build --no-cache构建我的作品,然后从docker-compose up -d开始。 然后我进入php容器以生成laravel的APP_KEY;需要运行该应用程序:

php artisan key:generate

但是,刷新我的localhost:8000之后,我似乎从未执行过key:generate命令,这很奇怪,因为如果我进入php或nginx容器,我可以在{{1}处看到生成的密钥}文件。

当然,我尝试运行工匠命令.envcache:clear,但结果仍然相同。

我怀疑问题在于Dockerfile完成的文件复制。我是否需要事先将项目文件复制到外部卷上,然后将其安装在两个容器上?

0 个答案:

没有答案