Я пытаюсь создать тестовый контейнер Laravel (в котором я сделаю некоторые большие изменения в системе; но это не связано с проблемой). Как видите, я загружаю содержимое Laravel внутри каталога. Если я запускаю этот контейнер через docker run
, я могу получить доступ ко всем файлам.
Однако, если я запускаю тот же контейнер через файл docker-compose.yml
, каталог laravel\blog
создается в хост-системе, но содержимое исчезает из контейнера (если я выполнил c - в нем ничего не осталось).
Я не знаю, что я делаю неправильно, так как все выглядит корректно. В общем, я хотел бы добиться того же поведения, что и контейнер database
. Я хочу, чтобы содержимое контейнера синхронизировалось с выбранной папкой хоста. Та же проблема возникает и при удалении службы web
; Я думал, что точка двойного объема может вызвать удаление в контейнере.
Заранее большое спасибо!
Dockerfile:
FROM php:7.3-fpm
# Installing dependencies
RUN apt-get update && apt-get install -y \
libzip-dev \
git \
mariadb-client \
zip \
unzip \
nano \
curl \
git \
libmagickwand-dev --no-install-recommends \
&& pecl install imagick
# Docker extensions
RUN docker-php-ext-install pdo_mysql mbstring zip exif pcntl
RUN docker-php-ext-configure gd --with-gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ --with-png-dir=/usr/include/
RUN docker-php-ext-install gd
RUN docker-php-ext-enable imagick
# Installing composer
RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" \
&& php composer-setup.php \
&& php -r "unlink('composer-setup.php');" \
&& mv composer.phar /usr/local/bin/composer
# Installing node.js & npm
RUN curl -sL https://deb.nodesource.com/setup_13.x | bash - \
&& apt-get install -y nodejs
# Clear cache
RUN apt-get clean && rm -rf /var/lib/apt/lists/*
# Laravel installer
RUN composer global require laravel/installer
ENV DOCKER_LARAVEL_PROJECT_NAME blog
# init project
WORKDIR /laravel
RUN composer create-project --prefer-dist laravel/laravel $DOCKER_LARAVEL_PROJECT_NAME
WORKDIR /laravel/$DOCKER_LARAVEL_PROJECT_NAME
VOLUME /laravel/$DOCKER_LARAVEL_PROJECT_NAME
docker - составить. yml
version: "3.7"
services:
app:
image: laratest
volumes:
- ./../laravel:/laravel/blog
environment:
- DB_HOST=database
depends_on:
- database
web:
image: nginx:latest
working_dir: /var/www
volumes:
- ./../laravel:/var/www
- ./vhost.conf:/etc/nginx/conf.d/default.conf
ports:
- "80:80"
depends_on:
- app
database:
image: mysql:5.7
volumes:
- ./db:/var/lib/mysql
environment:
- "MYSQL_ALLOW_EMPTY_PASSWORD=yes"
- "MYSQL_DATABASE=database"
- "MYSQL_USER=root"
- "MYSQL_PASSWORD=password"
- "MYSQL_ROOT_PASSWORD=password"
ports:
- "33061:3306"