Docker-compose - 如何将一个容器的数据填充到另一个容器中?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker-compose - 如何将一个容器的数据填充到另一个容器中?相关的知识,希望对你有一定的参考价值。
我的docker-compose文件如下。
version: '3'
services:
database:
image: postgres
restart: always
environment:
POSTGRES_PASSWORD: qwerty
POSTGRES_USER: qwerty
backend:
depends_on:
- database
build:
#Dockerfile used here will use python image,build the django project and run using uwsgi in port 4000
context: .
dockerfile: dockerfile_uwsgi
ports:
- "4000:4000"
image: backend_img
environment:
DB_HOST: database
DB_NAME: qwerty
DB_USER: qwerty
DB_PASSWORD: qwerty
migration:
depends_on:
- backend
image: backend_img
entrypoint: ["sh", "-c"]
command: ["
python manage.py collectstatic --noinput;
python manage.py makemigrations;
python manage.py migrate;"]
environment:
DB_HOST: database
DB_NAME: qwerty
DB_USER: qwerty
DB_PASSWORD: qwerty
frontend:
depends_on:
- backend
build:
#The dockerfile used her uses nginx image, it is configured to act as reverse proxy and serve static files.
context: .
dockerfile: dockerfile_nginx
ports:
- "9443:8443"
关于Docker-compose的解释 docker-compose.yaml
: 后台容器在这里设置django项目,并使用uwsgi为项目服务,使用相同的镜像,迁移容器将收集所有app目录下的静态文件,并将其填充到容器的当前工作目录中。前端容器是一个nginx,作为反向代理。我也想从nginx容器中获取静态文件。
这里我面临的问题是,我想让迁移容器创建的静态文件出现在前端容器中。这样nginx就可以提供静态文件。如何做到这一点?如果假设设计不应该是这里的样子,请建议我如何重新设计来实现这个要求?
我知道使用共享卷可以做到这一点。但是,我不想使用共享卷,因为填充到共享卷的数据将持久存在其中,如果开发人员修改应用程序文件夹中的静态内容,更改将不会填充到卷中,除非卷挂载点被刷新。这是基于我所理解的,如果我错了,请纠正我。
无论在docker层为你的资源提供服务的是什么--gunicorn,uwsgi,还是什么--都可能支持为静态资产提供服务,而且比django本身的效率高得多。
在你的情况下。nginx
本质上是你的应用程序的外部。 而不是试图 "把你的静态资产放到nginx中",让客户端来完成这项工作,并且 缓存 他们在nginx中一旦被代理。 Nginx有很好的缓存支持。
如果你真的想把静态资产放到一个,你可以 COPY --from=...
如同 https:/docs.docker.comdevelopdevelop-imagesmultistage-build。 复制静态资产到你的自定义nginx容器中。 使用django容器作为源码--你必须确保它是内置的。之后 你的django容器。 这在docker-compose中可能无法完全实现。 这里面有合理的摩擦;如果你试图构建和部署docker工件到生产服务器上,你也会有同样的摩擦。
以上是关于Docker-compose - 如何将一个容器的数据填充到另一个容器中?的主要内容,如果未能解决你的问题,请参考以下文章
如何将映像创建的卷与 docker-compose 指定的命名卷链接?
如何使用 docker-compose.yml 和 ecs-cli 将 EBS 卷附加到我的容器
使用 docker-compose 时如何在容器内使用主机用户修改卷文件
当 docker-compose 的一部分时,自定义 nginx 容器立即退出