私は開発者と運用環境を構築するためにドッカーを使用する予定です。私はDjangoベースのアプリケーションをビルドします。Dockerは製作中ですか?
私はdocker-compose
を使用してすべてのローカルコンテナを管理します。これは便利で便利なソリューションです。私はDjango、3つのセロリキュー、rabbitmq、2つのpostgresql DBを実行します。
私の生産環境はまったく異なります。私はガンコンとnginxを実行する必要があります。さらに、AWS RDSを使用してDBが実行されます。もちろん、Djangoアプリケーションは、異なる設定ファイルやより多くのenv変数のような、より多くのものを必要とします。
私はそれをどのように分割するのかを考えています。私もdocker-compose
すべきですか?それはdevとprodのための別々のファイルを必要とします、多分ステージングなどのためにもっと...もしそうなら、それをどのように展開するのですか? Jenkinsを使用して、composeを使用してすべてを再起動しますか?
docker
コマンドを直接実行する必要がありますか?しかし、私は自分の開発者が生きていると自信がなく、その行動を予測することはより困難です。
私はすべての環境で作成ファイルを実行するアイデアは気に入っていますが、異なる環境用に複数のファイルを管理することは良い考えです。 Devは、より少ない環境を必要とし、構成を少なくします。私はenvファイルを使用して、すべてをプロダクションに設定できます。しかし、私はSEレポで私のライブ設定を維持する必要がありますか?以前はプロビジョニング中にすべての環境変数を設定していましたが、これは別のプロセスでした。今はプロビジョニングとデプロイメントが同じように見えますか?これはDockerのやり方なのでしょうか?
DevとProdの唯一の違いは、スケールとデータへのアクセスが理想的です。 Docker SwarmはEC2上で稼働することができます。これにより、本番環境で同じワークフローを使用できるようになります。 RDSを使用している場合は、DB URLと資格情報を環境変数を使用してコンテナに挿入できます。これは、Dockerコンテナ内でスタンドアロンで動作するデータベースを使用してDevでシミュレートできます。 –
3番目のプロジェクトでは、環境ごとに別々のファイルを使用しています。 – Opal