diff --git a/.github/workflows/pythonapp.yml b/.github/workflows/pythonapp.yml index 2127b0e..d8b151b 100644 --- a/.github/workflows/pythonapp.yml +++ b/.github/workflows/pythonapp.yml @@ -24,8 +24,10 @@ jobs: run: sudo service mysql stop - name: Build the docker-compose stack run: | - cd ${GITHUB_WORKSPACE}/microservices - docker-compose up -d + docker-compose -f microservices/docker-compose.yml up -d \ + vault-server vault-client + export GUEST_HOME="${GITHUB_WORKSPACE}" + ./docker-compose-wrapper.sh - name: Bootstrap run: | export GUEST_HOME="${GITHUB_WORKSPACE}" diff --git a/Vagrantfile b/Vagrantfile index cbe5611..01f0fb5 100644 --- a/Vagrantfile +++ b/Vagrantfile @@ -18,10 +18,14 @@ Vagrant.configure("2") do |config| config.vm.provision :docker_compose, compose_version: "1.25.4", yml: "/vagrant/microservices/docker-compose.yml", + command_options: { up: "-d vault-server vault-client"}, run: "always", env: { "GUEST_HOME" => "/vagrant"} + config.vm.provision "shell", + path: "docker-compose-wrapper.sh", + env: {"GUEST_HOME" => "/vagrant"} config.vm.provision "shell", - path:"bootstrap-app.sh", + path: "bootstrap-app.sh", env: {"GUEST_HOME" => "/vagrant"} config.vm.define "dev" do |dev| diff --git a/bootstrap-app.sh b/bootstrap-app.sh index f9c3fb0..4cda5d4 100755 --- a/bootstrap-app.sh +++ b/bootstrap-app.sh @@ -2,12 +2,5 @@ GUEST_HOME=${GUEST_HOME:='.'} -apt-get update -apt-get install -y python3-pip python3-setuptools mysql-client libmysqlclient-dev - -pip3 install -r $GUEST_HOME/requirements.lock - -chmod 755 $GUEST_HOME/main.py - export FLASK_APP=$GUEST_HOME/main.py nohup python3 -m flask run --host=0.0.0.0 > /dev/null 2>&1 & diff --git a/docker-compose-wrapper.sh b/docker-compose-wrapper.sh new file mode 100755 index 0000000..d696264 --- /dev/null +++ b/docker-compose-wrapper.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env bash + +GUEST_HOME=${GUEST_HOME:='.'} + +apt-get update +apt-get install -y python3-pip python3-setuptools mysql-client libmysqlclient-dev + +pip3 install -r $GUEST_HOME/requirements.lock + +MYSQL_ROOT_PASSWORD=$(cd $GUEST_HOME && export GUEST_HOME=$GUEST_HOME && python3 -c "from project.secrets import get_secret; print(get_secret('mysql/password'))") +export MYSQL_ROOT_PASSWORD +docker-compose -f $GUEST_HOME/microservices/docker-compose.yml up -d db \ No newline at end of file diff --git a/main.py b/main.py index c1be59a..1e79c1e 100755 --- a/main.py +++ b/main.py @@ -3,7 +3,7 @@ import logging -from project import create_app, create_db +from project.create import create_app, create_db from project.routes import configure_routes logging.basicConfig(filename='zapata.log', level=logging.DEBUG) diff --git a/microservices/docker-compose.yml b/microservices/docker-compose.yml old mode 100644 new mode 100755 index ab8390f..2cc8d84 --- a/microservices/docker-compose.yml +++ b/microservices/docker-compose.yml @@ -35,13 +35,11 @@ services: container_name: db environment: - MYSQL_DATABASE=zapata - - MYSQL_ROOT_PASSWORD=root + - MYSQL_ROOT_PASSWORD - MYSQL_ROOT_HOST=% ports: - 3306:3306 volumes: - ./db/create_db.sql:/docker-entrypoint-initdb.d/create_db.sql - ./db/my.cnf:/etc/mysql/my.cnf - depends_on: - - vault-client restart: always diff --git a/project/__init__.py b/project/__init__.py index e890220..e69de29 100644 --- a/project/__init__.py +++ b/project/__init__.py @@ -1,21 +0,0 @@ -#!/usr/bin/env python3 - -from flask import Flask -from flask_mysqldb import MySQL - - -def create_app(): - app = Flask(__name__) - return app - - -def create_db(app): - app.config['MYSQL_HOST'] = '127.0.0.1' - app.config['MYSQL_USER'] = 'root' - app.config['MYSQL_PASSWORD'] = 'root' - app.config['MYSQL_DB'] = 'zapata' - app.config['MYSQL_CURSORCLASS'] = 'DictCursor' - app.secret_key = 'secret123' - - db = MySQL(app) - return db diff --git a/project/create.py b/project/create.py new file mode 100644 index 0000000..e890220 --- /dev/null +++ b/project/create.py @@ -0,0 +1,21 @@ +#!/usr/bin/env python3 + +from flask import Flask +from flask_mysqldb import MySQL + + +def create_app(): + app = Flask(__name__) + return app + + +def create_db(app): + app.config['MYSQL_HOST'] = '127.0.0.1' + app.config['MYSQL_USER'] = 'root' + app.config['MYSQL_PASSWORD'] = 'root' + app.config['MYSQL_DB'] = 'zapata' + app.config['MYSQL_CURSORCLASS'] = 'DictCursor' + app.secret_key = 'secret123' + + db = MySQL(app) + return db diff --git a/project/python_modules/__init__.py b/project/python_modules/__init__.py deleted file mode 100644 index e5a0d9b..0000000 --- a/project/python_modules/__init__.py +++ /dev/null @@ -1 +0,0 @@ -#!/usr/bin/env python3 diff --git a/project/routes.py b/project/routes.py index c011ae6..7017965 100755 --- a/project/routes.py +++ b/project/routes.py @@ -5,7 +5,7 @@ from wtforms import Form, StringField from wtforms.validators import DataRequired, Email -from project.python_modules.secrets import get_secret +from project.secrets import get_secret def configure_routes(app, db): diff --git a/project/python_modules/secrets.py b/project/secrets.py similarity index 100% rename from project/python_modules/secrets.py rename to project/secrets.py diff --git a/requirements.lock b/requirements.lock index 8d40e62..32d4a92 100644 --- a/requirements.lock +++ b/requirements.lock @@ -2,4 +2,5 @@ Flask==1.1.1 wtforms==2.2.1 passlib==1.7.2 flask_mysqldb==0.2.0 -mailchimp3==3.0.12 \ No newline at end of file +mailchimp3==3.0.12 +requests==2.22.0 \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index c2aab25..e242f2e 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,4 +2,5 @@ Flask wtforms passlib flask_mysqldb -mailchimp3 \ No newline at end of file +mailchimp3 +requests \ No newline at end of file diff --git a/tests/conftest.py b/tests/conftest.py index 6ab3672..ed63af4 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -3,9 +3,9 @@ import MySQLdb import pytest -from project import create_app, create_db -from project.python_modules.secrets import get_secret +from project.create import create_app, create_db from project.routes import configure_routes +from project.secrets import get_secret @pytest.fixture