我正在尝试使用Docker容器部署照片流(https://github.com/maxvoltar/photo-stream)。 Photo-stream是用于自我托管的图片发布网站。相对于其安装位置,它期望其图片位于名为“ photos / original /”的路径中。它将在“照片/”下创建其他目录以缓存缩略图等。
当我用一些图片填充该目录并使用以下命令从其构建目录本地启动应用程序时(无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',并在其中填充图片时,将显示这些卷。