假设根据DJANGO project
中给出的示例,我使用docker-compose
创建了一个https://docs.docker.com/compose/django/
下面是一个简单的docker-compose.yml
文件,用于了解缘故
docker-compose.yml
version: '3'
services:
db:
image: postgres
web:
image: python:3
command: python3 manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
depends_on:
- db
在这里,我使用了两个图像python:3
(称为"web"
)和postgres
(称为"db"
),它们是从hub.docker.com
中自动找到并进行相应构建的。我们还希望web container
依赖于db container
。只是为了回忆上面docker-compose.yml
一旦我完成所有设置,docker-compose up
就可以看到两个containers
正在运行,并且django
项目正在我的本地计算机上运行。
一旦我使用了django应用程序,现在我想在生产服务器上进行部署。
所以如何将映像复制到开发服务器,以便我也在那里再次处理相同的docker映像。
因为我尝试在生产服务器上创建docker-compose.yml文件,所以数据库映像和Web映像可能会更改。
赞:
当我在开发计算机上构建postgres
映像时,说我有postgres version 9.5
但是,如果我再次在生产服务器上构建postgres
映像,则可能安装了postgres version 10.1
。
所以我不会在同一环境上工作,可能在同一操作系统上,但在同一版本的软件包上。
所以当我将事情转移到开发阶段时如何检查这一点
部分解决:
根据@Yogesh_D的答案,
如果我使用的是来自Dokcer hub的预构建映像,我们可以使用postgres:9.5.1或python:3等版本号轻松在生产服务器上获得相同的环境。
部分未解决:
但是如果我使用自己的Dockerfile自己创建了映像,然后在构建时对其进行了标记。现在我想在生产中使用相同的图像该怎么做。由于它不在Docker Hub上,我也可能不希望将其放在Docker Hub上。
因此,将我的映像手动复制到生产服务器是一个好主意,或者我只是复制Dockerfile并再次在生产服务器上构建映像。
答案 0 :(得分:0)
这应该非常简单,因为docker compose image
指令甚至可以为该图像指定标签。
因此,在您的情况下,将是这样的:
version: '3'
services:
db:
image: postgres:9.5.14
web:
image: python:3.6.6
command: python3 manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
depends_on:
- db
以上文件可确保您获得9.5.14版本的postgres和3.6.6版本的python。 无论您将其部署在哪里,这都是您得到的。 查看https://hub.docker.com//python 以获取python图像中所有可用的标记/版本,并查看https://hub.docker.com/ /postgres以找出可用于postgres的所有版本/标记。图片。
编辑: 要解决自定义图片的问题,您可以采用以下几种方法:
a。根据您的部署位置(数据中心与公共云提供商),您可以开始拥有docker image registry。这里有很多选项,例如this
b。如果您在aws,gcp,azure这样的流行云提供商中运行,则其中大多数都提供自己的注册表
c。或者,您可以使用docker hub设置private repositories。
每个标签都支持标签,因此仍要使用标签以确保您自己的自定义映像像公共映像一样被部署。