docker - 在特定路径上安装 docker 卷
问题描述
我正在尝试使用 docker 容器部署照片流( https://github.com/maxvoltar/photo-stream )。Photo-stream 是一个用于自托管的图片发布网站。它期望它的图片在一个名为“photos/original/”的路径中,相对于它的安装位置。它将在“photos/”下创建其他目录来缓存缩略图等。
当我用一些图片填充该目录并从其构建目录本地启动应用程序(没有 docker)时,使用:
$ bundle exec jekyll serve --host 0.0.0.0
它向我显示了我放在该目录中的图片。在 docker 容器中运行应用程序时,我需要它来安装一个包含路径“照片/原始”的卷,以便我可以将图片保存在那里。我在安装在 /mnt/data/ 的磁盘上创建了此路径。
为了做到这一点,我在现有的 Dockerfile 中添加了一个卷行:
FROM ruby:latest
ENV VIPSVER 8.9.1
RUN apt update && apt -y upgrade && apt install -y build-essential
RUN wget -O ./vips-$VIPSVER.tar.gz https://github.com/libvips/libvips/releases/download/v$VIPSVER/vips-$VIPSVER.tar.gz
RUN tar -xvzf ./vips-$VIPSVER.tar.gz && cd vips-$VIPSVER && ./configure && make && make install
COPY ./ /photo-stream
WORKDIR /photo-stream
RUN ruby -v && gem install bundler jekyll && bundle install
VOLUME /photo-stream/photos
EXPOSE 4000
ENTRYPOINT bundle exec jekyll serve --host 0.0.0.0
我以这种方式构建容器:
$ docker build --tag photo-stream:1.0 .
我以这种方式运行容器:
$ docker run -d -p 4000:4000 -v /mnt/data/photos/:/photos/ --name ps photo-stream:1.0
我期待显示目录 /mnt/data/photos 的内容。相反,没有显示任何内容。但是,会创建一个卷“/var/lib/docker/volumes/e5ff426ced2a5e786ced6b47b67d7dee59160c60f59f481516b638805b731902/_data”,当其中填充有图片时,会显示这些。
解决方案
推荐阅读
- angular - 在显示 toast 消息之前,如何确保我的所有 observables 都已完成?
- python - Pandas:将 Dataframe 上三角转换为下三角,反之亦然
- c# - Nest 5.6 - 如何插入已存在 id 的文档?
- python - 使用 django 上下文数据填充 bootbox.js 提示
- html - & 和 %26 的替代品
- scala - 仅保留最新消息的节流 akka-actor
- python - 了解python元组列出性能优化
- string - SAS-如何在while循环期间将2个数值连接到变量名上
- java - 单独使用 @Entity 休眠 @OneToOne
- ionic-framework - 如何使用 tabs.router.module 中的路由在 Ionic 4 中触发 ionViewWillLeave