使用Docker

时间:2017-11-17 15:37:04

标签: django docker docker-compose django-channels

我试图将我的应用程序移动到Docker。我目前正在使用fabric来部署我的Django应用程序。 我创建了一个docker-compose文件:

version: '3'

volumes:
  static-files:


services:
  nginx:
    image: nginx:latest
    volumes:
     - ./deploy/conf/nginx.conf.template:/etc/nginx/conf.d/mysite.template
     - static-files:/app/static
    ports:
      - "80:80"
    environment:
       - NGINX_HOST='localhost'
    command: /bin/bash -c "envsubst '\$NGINX_HOST' < /etc/nginx/conf.d/mysite.template > /etc/nginx/conf.d/default.conf && nginx -g 'daemon off;'"
    depends_on:
      - interface

  redis:
    image: redis:latest

  db:
    restart: always
    image: mdillon/postgis:9.5
    environment:
      - POSTGRES_USER=production
      - POSTGRES_PASSWORD=production
      - POSTGRES_DB=production

  interface:
    restart: always
    build: .
    working_dir: /app/code/src
    command: ["../../../wait-for-db.sh", "db", "./interface-entrypoint.sh"]
    volumes:
      - static-files:/app/static
    environment:
      - DJANGO_SETTINGS_MODULE=restapi.settings.production_settings
    expose:
      - "8001"
    depends_on:
      - db
      - redis

  workerserver:
    restart: always
    build: .
    working_dir: /app/code/src
    command: ["./worker-entrypoint.sh"]
    environment:
      - DJANGO_SETTINGS_MODULE=restapi.settings.production_settings
    depends_on:
      - db
      - redis
      - interface

这个docker-compose工作正常,我可以连接到服务器和所有。所以我的问题是:

  1. 如何在Docker设置中使用现有数据库?我尝试使用卷但我无法正常工作..
  2. 如何使用此设置处理迁移和代码更改?使用结构我只与主管一起迁移并且仅重新启动的工作人员。每个工人都拥有自己的代码&#34;在容器中。以某种方式在容器之间共享代码并为迁移创建单独的容器是否有意义?
  3. 如何自动部署?例如:我对代码进行了更改,我想将其部署到暂存环境,我不希望我的服务器在几分钟内不可用。使用面料,我的服务器永远不会停机,因为达芙妮从未重新启动,并且它一直在接受连接。

0 个答案:

没有答案