我如何实际打包和移动代码,比如说使用Docker进行生产部署?

时间:2016-09-01 21:22:29

标签: amazon-web-services docker

我意识到有各种不同的策略和Dev Opsy架构可以将Docker容器部署到生产环境中,但我仍然在学习Docker的一些基础知识,我真的在寻找最直接的东西将以下示例移动到AWS或其他远程站点的方法。我想我了解如何在各种容器中设置项目,链接它们等等。但我不了解如何保存或打包现有代码并将其部署到其他地方。

以下是我尝试使用的示例模板。

多克尔-撰写

web:
  restart: always
  build: ./web
  expose:
    - "8000"
  links:
    - postgres:postgres
    - redis:redis
  volumes:
    - /usr/src/app
    - /usr/src/app/static
  env_file: .env
  command: /usr/local/bin/gunicorn docker_django.wsgi:application -w 2 -b :8000

nginx:
  restart: always
  build: ./nginx/
  ports:
    - "80:80"
  volumes:
    - /www/static
  volumes_from:
    - web
  links:
    - web:web

postgres:
  restart: always
  image: postgres:latest
  ports:
    - "5432:5432"
  volumes:
    - pgdata:/var/lib/postgresql/data/

redis:
  restart: always
  image: redis:latest
  ports:
    - "6379:6379"
  volumes:
    - redisdata:/data

Dockerfile

FROM python:2.7
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD . /code/

这个Dockerfile只是创建一个名为' code'的目录。这是我假设实际开发将在哪里发生的地方。即;运行docker compose,创建容器,然后在代码目录中开始开发。所以,让我们说我已经完成了我正在处理的任何事情,现在我使用上面完全相同的模板部署到生产中,不知道这个Dockerfile只是创建一个空的'代码' AWS中的目录?我尝试从本地计算机上的代码目录部署的工作怎么样?如何打包实际的代码目录以转移到生产?

1 个答案:

答案 0 :(得分:1)

docker build的结果应该是一个图像,其中包含在任何地方运行应用程序所需的所有命令,脚本,编译代码和解释代码。您的开发人员可以在进行更改时将自己的代码副本注入到具有卷装入的映像中,以避免不断重建整个容器(尽管docker的层缓存确实缩短了构建时间)。

构建完成后,您将docker push您的图片升级到注册表服务器,例如Docker Hub,或者您可以运行自己的(docker除了自己的商业产品之外还有一个注册表图像)或者使用AWS等第三方提供的注册表图像。然后,您的生产环境应docker pull并在部署到生产时运行此映像。