将夹具上传到在 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实例错误

通过 AWS Lambda 函数访问 EC2 实例服务

如何将我的 .war 文件复制到 AWS 上的 EC2 实例?

如何将我的 Django 文件上传到 AWS ec2? [复制]

在关闭之前将 docker 日志从 ec2 实例上传到 S3

如何在 AWS EC2 实例上激活 GPU 的使用?