Python новичок здесь. Я хочу настроить как минимум 2 различные среды в моем Python Flask приложении, контейнеризованном в Docker.
Например, это мой app.py:
app = Flask(__name__)
api = Api(app)
# TODO: IF LOCAL, SHOULD CONNECT USING CLIENT_CONNECTION_OPTION_2. IF AWS, CONNECT USING OPTION1.
#CLIENT_CONNECTION_OPTION_1:
#client = MongoClient("mongodb+srv://user:password@trialcluster.mongodb.net/test")
#CLIENT_CONNECTION_OPTION_2:
client = MongoClient("mongodb://db:27017")
db = client.aNewDB
@app.route('/')
def helloWorld():
return 'Hello World, this environment is: ' + ENVIRONMENT_NAME
if __name__ == '__main__':
app.run(host='0.0.0.0')
И когда я работаю с локальной версией, я использую Dockerized MongoDB, как в моем docker -compose.yml:
version: '3'
services:
app:
image: app
build:
context: ../
dockerfile: deployments/app/Dockerfile
ports:
- "5000:5000"
links:
- db
db:
build: ./db
Теперь, когда я готов развернуть эту вещь на AWS Я действительно хочу sh автоматизировать конфигурацию среды, вместо того, чтобы переходить к app.py
и комментировать CLIENT_CONNECTION_OPTION_2
и раскомментировать другой, так как я буду использовать MongoDBAtlas, который не требует, чтобы БД была Dockerized .
Кроме того, helloWorld()
должно печатать «..... is: PRODUCTION», если приложение работает в AWS, и «DEV», если оно выполняется локально.
Что такое правильный способ go о настройке такого поведения с учетом выбранного мной стека технологий?