Py学习  »  NGINX

需要一些关于nginx,git和jenkins的建议

Fatih • 4 年前 • 169 次点击  

我最近启动了一个项目来了解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零件现在不工作。仍在尝试配置此项,但我也有其他问题。我认为,没有生产和开发环境。我不能在开发时轻松使用nginx。它永远不会正常工作。所以我想我可以用詹金斯和吉特。同时,我想把我的项目分享给其他拥有麻省理工学院执照的人。然后我意识到我不能,因为在源代码中我使用了我的生产密码、用户名等。

主要问题:如何创建生产和开发环境。它只是使用git吗?或者我需要创建全新的基础设施?如何在不给每个人密码的情况下开发免费软件?我可以在Github中加密它们吗? 我认为生产和开发环境将解决我的问题。我看到每个人都这么说,但那是什么?这是什么意思?是关于git分支的吗?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/37991
 
169 次点击  
文章 [ 1 ]  |  最新文章 4 年前
Bruce Becker
Reply   •   1 楼
Bruce Becker    5 年前

第一条规则: 不要向源代码管理提交密码 .

第二条规则:不要在应用程序源代码中硬编码主机名、用户名或密码。

一般来说,尝试遵循 12 factor application 模式。

开发、分段和生产环境的关键是,您可以在多个不同设置的地方运行相同的应用程序源代码。例如,我的日常开发工作流程如下:

  1. 我在本地进行开发,根本不涉及码头工人。我所有的数据库主机名都是 localhost ,密码是 password . 我开发、运行本地测试、启动服务和测试,直到我认为它可以工作为止。

  2. 我构建组件的Docker映像并在本地部署它。这可能是本地Docker撰写安装程序,其中数据库主机名为 database 密码是 密码 .

  3. 我致力于源代码管理并将其推送到一个分支。我的同事回顾了一下。

  4. 我们的CI系统(实际上是Jenkins)构建我的组件,运行它的测试,并将其部署到测试环境中。有一个实际的数据库主机名和一个詹金斯注入的密码。

  5. 如果这一切都很好,并且组合系统在测试环境中工作,那么我合并了我的分支,并告诉Jenkins将其部署到生产环境中。这将使用一个具有真实主机名的非Docker数据库,以及Jenkins注入的密码。

所以:有时我在Docker中运行东西;有时我不运行;相同的应用程序代码在两个地方都可以工作。我不太担心一个环境可能使用与另一个不同的语言运行时补丁版本,并显式声明我的库依赖项( package.json , Gemfile , setup.py / requirements.txt , 等。 )我通过环境变量传入主机名和凭据,这是环境之间唯一的区别。