我正在尝试将驻留在以下容器的坞卷中的Json文件连接到正在运行django项目的主坞容器中。
由于我正在使用Caprover,我的Docker组合选项非常有限。所以Docker Composer并不是一个真正的选择。我想用一个链接来代替通过网络公开json文件。
有点像domain.com/folder/jsonfile.json
有人能告诉我这个文件里面是否有可能吗?
我所使用的映像对于容器是至关重要的,所以我可以添加一个nginx映像吗?或者我是否需要做任何其他的更改来完成这个工作呢?
或者nginx甚至没有必要?
FROM ubuntu:devel
ENV TZ=Etc/UTC
ARG APP_HOME=/app
WORKDIR ${APP_HOME}
ENV DEBIAN_FRONTEND=noninteractive
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime
RUN echo $TZ > /etc/timezone
RUN apt-get update && apt-get upgrade -y
RUN apt-get install gnumeric -y
RUN mkdir -p /etc/importer/data
RUN mkdir /voldata
COPY config.toml /etc/importer/
COPY datasets/* /etc/importer/data/
VOLUME /voldata
COPY importer /usr/bin/
RUN chmod +x /usr/bin/importer
COPY . ${APP_HOME}
CMD sleep 999d发布于 2022-01-20 09:13:37
在两个容器中使用相同的体积
码头工人-组成:
volumes:
shared_vol:
services:
service1:
volumes:
- 'shared_vol:/path/to/file'
service2:
volumes:
- 'shared_vol:/path/to/file'上面的机制取代了自volumes_from以来的v3,但这也适用于v2:
volumes:
shared_vol:
services:
service1:
volumes:
- 'shared_vol:/path/to/file'
service2:
volumes_from:
- service1如果您想避免无意中的更改,请添加:ro以便对目标服务进行只读:
service1:
volumes:
- 'shared_vol:/path/to/file'
service2:
volumes:
- 'shared_vol:/path/to/file:ro'http-服务器
当然,您可以通过http (或其他协议)提供文件。有两个亮点:
包括到容器的http服务,(非常简单,取决于容器中已经给出的内容),例如使用nodejs,您可以非常容易地使用这个https://www.npmjs.com/package/http-server。尺寸不重要吗?所以只需安装:
RUN apt-get install -y nodejs npm
RUN npm install -g http-server
EXPOSE 8080
CMD ["http-server", "--cors", "-p8080", "/path/to/your/json"]docker-compose (在8080上每次默认运行,因此打开这个):
existing_service:
ports:
- '8080:8080'运行一个独立的http-服务器 (nginx,apache,..)在另一个容器中,但是您再次依赖于对两个服务使用相同的卷,因此对于本地解决方案来说,这是非常过分的。
基像
如果您没有很好的理由,我将永远不会使用像:devel, :rolling or :latest这样的东西作为基本图像。坚持使用LTS版本,而不是像ubuntu:22.04那样
http-server的测试
Dockerfile
FROM ubuntu:20.04
ENV TZ=Etc/UTC
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN apt-get update
RUN apt-get install -y nodejs npm
RUN npm install -g http-server@13.1.0 # Issue with JSON-File in V14: https://github.com/http-party/http-server/issues/634
COPY ./test.json ./usr/wwwhttp/test.json
EXPOSE 8080
CMD ["http-server", "--cors", "-p8080", "/usr/wwwhttp/"]
# docker build -t test/httpserver:latest .
# docker run -p 8080:8080 test/httpserver:latest免责声明:我不太熟悉节点-对接-图像,这只是给出一个快速的工作解决方案,并从那里继续。我没有在生产中使用nodeJS,但我确信它可以从胖到..。好吧..。相当胖。但对于快速成型来说,尺寸并不重要。
发布于 2022-01-17 17:47:14
如果您只想让两个容器访问同一个文件,只需使用带有--挂载的卷。
https://stackoverflow.com/questions/70744756
复制相似问题