Нужен совет для nginx, git и jenkins - PullRequest
0 голосов
/ 17 октября 2018

Недавно я начал проект по изучению практики DevOps.Я разработал приложение для Django и хочу писать технические посты в своем приложении.Мой сайт готов к публикации, но у меня есть несколько вопросов.Я докеризировал свое приложение и работаю с docker-compose, но я не хочу тратить время на nginx, поэтому хочу докеризировать это тоже.

version: '3.6'

services:
  db:
    image: postgres
    volumes:
      - postgres_data:/var/lib/postgresql/data/
  web:
    build: .
    image: dockerdjangoexample
    command: bash -c "python manage.py makemigrations && python manage.py migrate && python manage.py collectstatic --noinput && gunicorn fatihkocnet.wsgi -b 0.0.0.0:8000"
    volumes:
      - .:/fatihkocnet
      - ./fatihkocnet/career/static:/static
    depends_on:
      - db
  nginx:
    restart: always
    image: nginx
    ports:
      - "8000:8000"
    volumes:
      - .:/fatihkocnet
      - ./fatihkocnet/career/static:/static
      - ./nginx.conf:/etc/nginx/conf.d
    depends_on:
      - web
volumes:
  postgres_data:

Партия Nginx сейчас не работает.Все еще пытаюсь настроить это, но у меня есть и другие проблемы.Я думаю, без производства и развития env.Я не могу легко использовать nginx при разработке.Это никогда не будет работать должным образом.Поэтому я подумал, что могу использовать Дженкинс и Мерзавец.Тем временем я хочу поделиться своим проектом с другими людьми с помощью MIT License.Тогда я понял, что не могу.Потому что в исходном коде я использую свой рабочий пароль, имена пользователей и т. Д.

ОСНОВНЫЕ ВОПРОСЫ: Как я могу создать производственную среду и среду разработки.Это просто использование git?Или мне нужно создать совершенно новую инфраструктуру?Как я могу разрабатывать бесплатное программное обеспечение, не давая всем свои пароли.Могу ли я склепать их в Github?Я думаю, что среда производства и разработки решит мою проблему.Я вижу, все так говорят, но что это?Что они имеют в виду под этим?Это о git ветках?

1 Ответ

0 голосов
/ 17 октября 2018

Первое правило: не передавайте пароли для управления исходным кодом .

Второе правило: не вводите жестко закодированные имена хостов, имена пользователей или пароли в исходный код вашего приложения.

В общем, попробуйте следовать шаблону 12 фактора .

Весь смысл сред «разработки», «подготовки» и «производства» заключается в том, что вы можете запускать один и тот же исходный код приложения в нескольких местах с разными настройками.Например, мой рабочий процесс разработки выглядит следующим образом:

  1. Я занимаюсь разработкой локально, без участия Docker.Все имена хостов моей базы данных localhost, а пароли password.Я разрабатываю, запускаю локальные тесты, запускаю службу и тестирую до тех пор, пока не думаю, что она работает.

  2. Я создаю образы Docker для своего компонента и развертываю его локально.Это может быть в локальной настройке Docker Compose, где имя хоста базы данных database, а пароль password.

  3. Я фиксирую управление исходным кодом и отправляю его в ветку,Мои коллеги просматривают его.

  4. Наша система CI (как это происходит с Дженкинсом) создает мой компонент, запускает его тесты и развертывает его в тестовой среде.Существует фактическое имя хоста базы данных и пароль, который вставляет Дженкинс.

  5. Если это все хорошо, и объединенная система работает в тестовой среде, я объединяю свою ветку и приказываю Дженкинсу развернутьв производственную среду.При этом используется база данных, отличная от Docker, с реальным именем хоста и паролем, который вводит Дженкинс.

Итак: иногда я запускаю вещи в Docker;иногда нет;один и тот же код приложения работает в обоих местах.Я не слишком обеспокоен тем, что одна среда может использовать другой выпуск исправлений языковой среды выполнения, чем другая, и явно объявлять мои библиотечные зависимости (package.json, Gemfile, setup.py / requirements.txt, и т. Д. ).Я передаю имена хостов и учетные данные через переменные среды, и это единственные различия между средами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...