将夹具上传到在 AWS EC2 实例的 docker 容器中运行的 django
Posted
技术标签:
【中文标题】将夹具上传到在 AWS EC2 实例的 docker 容器中运行的 django【英文标题】:Uploading fixtures to django running within docker container in an AWS EC2 instance 【发布时间】:2022-01-08 11:28:53 【问题描述】:所以我需要在一个正在运行的实例上执行一些操作——这是一次性的事情。这涉及将固定装置上传到它。该结构是一个 aws ec2 实例,在其上运行一些 docker 容器,包括一个 django 容器。这是我需要上传固定装置的 docker 容器。这都是 ci/cd 管道的一部分,具有 postgres RDS 数据库、nginx 代理和 django 容器。
我可以将固定装置 scp 到 AWS EC2 实例中。然后我可以通过 SSH 连接到 EC2 实例,并从那里登录到正在运行的容器(使用 docker exec)。
没关系,但是....
如何从 docker-container 中访问我上传到 ec2 实例(docker 主机)的固件?
注意:我知道我可以将固定装置提交给 git,然后它们会找到进入 docker 映像的方式并在那里随时可用。我可能宁愿将它们直接 scp 到 ec2 并在命令行中管理它们(因为可能需要对固定装置进行小的更改,这意味着我必须运行整个管道并每次等待几分钟......)
【问题讨论】:
【参考方案1】:您可能希望将volume 附加到您的 Docker 容器。通过附加一个卷,您实际上是在与正在运行的 Docker 容器共享主机上的一个文件夹。
您可以在启动容器时附加卷:
docker run -d \
--name=my-container-name \
-v /host/path:/container/path \
myimage:latest
如果是 docker compose,你可以像这样添加一个卷:
version: "3.9"
services:
myservice:
image: myimage
volumes:
- "/host/path:/container/path"
【讨论】:
嗯,好吧,但是……我不会为此更改 docker-compose 命令。我想我可以停止正在运行的容器,用绑定土墩重新启动,做生意,停止它,然后用生产命令重新启动它? 如果你有 docker compose 事件更容易。我已经更新了答案,你也应该看看官方的docs。 对 - 但是拥有多个 docker-compose 配置会变得有点混乱,因为我需要添加某种选项来选择在 ci/cd 管道中运行的选项... . 虽然我想我可以上传 2 个 docker-compose 文件 - 一个始终运行的真实作品,以及我需要的一个鬼混。奇怪的是,我并没有真正意识到这与在本地执行此操作几乎相同。感谢您的想法。以上是关于将夹具上传到在 AWS EC2 实例的 docker 容器中运行的 django的主要内容,如果未能解决你的问题,请参考以下文章
将Ruby on Rails项目从github上传到AWS EC2实例错误
如何将我的 .war 文件复制到 AWS 上的 EC2 实例?
如何将我的 Django 文件上传到 AWS ec2? [复制]