Я ищу способ совместного использования произвольного каталога в одном контейнере Docker с другим, но без сохранения томов между созданиями контейнеров.
Вариант использования - совместное использование статических ресурсов между веб-приложением и веб-сервером, таким как nginx. Оба контейнера построены по изображению. Dockerfile
веб-приложения копирует статические ресурсы в каталог, подобный /var/www/public
, при его создании. Я хочу избежать сохранения тома, поскольку статические ресурсы обновляются при сборке веб-приложения.
Я попытался сделать это с docker-compose.yml
, который выглядит следующим образом, но, к сожалению, этот том сохраняется, и при повторном создании контейнера с новым изображением содержимое общего тома не обновляется.
version: '3.5'
services:
web:
image: bswinnerton/nyc-restaurant-grades
networks:
- backend
volumes:
- www_data:/var/www/app/
nginx:
image: nginx
depends_on:
- web
volumes:
- ./nginx.conf:/etc/nginx/conf.d/default.conf:ro
- www_data:/var/www/app/
networks:
- backend
volumes:
www_data:
networks:
backend:
И веб-приложение Dockerfile
выглядит примерно так:
FROM ruby:2.5.1
# Install dependencies
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs
# Set working directory, where the commands will be ran:
RUN mkdir -p /var/www/app
WORKDIR /var/www/app
# Adding gems
COPY Gemfile Gemfile
COPY Gemfile.lock Gemfile.lock
RUN bundle install --jobs 20 --retry 5
# Adding project files
COPY . .
# Precompile assets
RUN bundle exec rails assets:precompile
CMD [ "bundle", "exec", "puma", "-C", "config/puma.rb" ]
Я подумал об использовании tmpfs
mount, но, похоже, они не могут быть разделены между контейнерами.