diff --git a/Pipfile b/Pipfile index 68a0036..5ab3763 100644 --- a/Pipfile +++ b/Pipfile @@ -9,6 +9,7 @@ werkzeug = "~=2.0" flask = "~=2.0" pyyaml = "*" sqlalchemy = "~=1.4" +pymysql = "*" [dev-packages] diff --git a/Pipfile.lock b/Pipfile.lock index 5470355..30839be 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "c58e87fa3968e9700fc194b98a663138ce212ee9601afcfd1e4478a772041294" + "sha256": "b0c979ea7ddef64da26c3f7537dbadaa9de352c7a8f6cde551f7ce85519de503" }, "pipfile-spec": 6, "requires": { @@ -18,19 +18,19 @@ "default": { "click": { "hashes": [ - "sha256:6a7a62563bbfabfda3a38f3023a1db4a35978c0abd76f6c9605ecd6554d6d9b1", - "sha256:8458d7b1287c5fb128c90e23381cf99dcde74beaf6c7ff6384ce84d6fe090adb" + "sha256:24e1a4a9ec5bf6299411369b208c1df2188d9eb8d916302fe6bf03faed227f1e", + "sha256:479707fe14d9ec9a0757618b7a100a0ae4c4e236fac5b7f80ca68028141a1a72" ], - "markers": "python_version >= '3.6'", - "version": "==8.0.4" + "markers": "python_version >= '3.7'", + "version": "==8.1.2" }, "flask": { "hashes": [ - "sha256:59da8a3170004800a2837844bfa84d49b022550616070f7cb1a659682b2e7c9f", - "sha256:e1120c228ca2f553b470df4a5fa927ab66258467526069981b3eb0a91902687d" + "sha256:8a4cf32d904cf5621db9f0c9fbcd7efabf3003f22a04e4d0ce790c7137ec5264", + "sha256:a8c9bd3e558ec99646d177a9739c41df1ded0629480b4c8d2975412f3c9519c8" ], "index": "pypi", - "version": "==2.0.3" + "version": "==2.1.1" }, "greenlet": { "hashes": [ @@ -163,6 +163,14 @@ "markers": "python_version >= '3.7'", "version": "==2.1.1" }, + "pymysql": { + "hashes": [ + "sha256:41fc3a0c5013d5f039639442321185532e3e2c8924687abe6537de157d403641", + "sha256:816927a350f38d56072aeca5dfb10221fe1dc653745853d30a216637f5d7ad36" + ], + "index": "pypi", + "version": "==1.0.2" + }, "pyyaml": { "hashes": [ "sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293", @@ -204,60 +212,61 @@ }, "setuptools": { "hashes": [ - "sha256:63b73d83c4d419d9dd992978cf369af5b6efa06236a4a1397b9bdf3ecadb0453", - "sha256:9bc2671450c57d9e4885e7dcdc552e3b107b80a5a8f8b1a1df7d06f52db194be" + "sha256:26ead7d1f93efc0f8c804d9fafafbe4a44b179580a7105754b245155f9af05a8", + "sha256:47c7b0c0f8fc10eec4cf1e71c6fdadf8decaa74ffa087e68cd1c20db7ad6a592" ], "markers": "python_version >= '3.7'", - "version": "==61.1.0" + "version": "==62.1.0" }, "sqlalchemy": { "hashes": [ - "sha256:04164e0063feb7aedd9d073db0fd496edb244be40d46ea1f0d8990815e4b8c34", - "sha256:159c2f69dd6efd28e894f261ffca1100690f28210f34cfcd70b895e0ea7a64f3", - "sha256:199dc6d0068753b6a8c0bd3aceb86a3e782df118260ebc1fa981ea31ee054674", - "sha256:1bbac3e8293b34c4403d297e21e8f10d2a57756b75cff101dc62186adec725f5", - "sha256:20e9eba7fd86ef52e0df25bea83b8b518dfdf0bce09b336cfe51671f52aaaa3f", - "sha256:290cbdf19129ae520d4bdce392648c6fcdbee763bc8f750b53a5ab51880cb9c9", - "sha256:316270e5867566376e69a0ac738b863d41396e2b63274616817e1d34156dff0e", - "sha256:3f88a4ee192142eeed3fe173f673ea6ab1f5a863810a9d85dbf6c67a9bd08f97", - "sha256:4aa96e957141006181ca58e792e900ee511085b8dae06c2d08c00f108280fb8a", - "sha256:4b2bcab3a914715d332ca783e9bda13bc570d8b9ef087563210ba63082c18c16", - "sha256:576684771456d02e24078047c2567025f2011977aa342063468577d94e194b00", - "sha256:5a2e73508f939175363d8a4be9dcdc84cf16a92578d7fa86e6e4ca0e6b3667b2", - "sha256:5ba59761c19b800bc2e1c9324da04d35ef51e4ee9621ff37534bc2290d258f71", - "sha256:5dc9801ae9884e822ba942ca493642fb50f049c06b6dbe3178691fce48ceb089", - "sha256:6fdd2dc5931daab778c2b65b03df6ae68376e028a3098eb624d0909d999885bc", - "sha256:708973b5d9e1e441188124aaf13c121e5b03b6054c2df59b32219175a25aa13e", - "sha256:7ff72b3cc9242d1a1c9b84bd945907bf174d74fc2519efe6184d6390a8df478b", - "sha256:8679f9aba5ac22e7bce54ccd8a77641d3aea3e2d96e73e4356c887ebf8ff1082", - "sha256:8b9a395122770a6f08ebfd0321546d7379f43505882c7419d7886856a07caa13", - "sha256:8e1e5d96b744a4f91163290b01045430f3f32579e46d87282449e5b14d27d4ac", - "sha256:9a0195af6b9050c9322a97cf07514f66fe511968e623ca87b2df5e3cf6349615", - "sha256:9cb5698c896fa72f88e7ef04ef62572faf56809093180771d9be8d9f2e264a13", - "sha256:b3f1d9b3aa09ab9adc7f8c4b40fc3e081eb903054c9a6f9ae1633fe15ae503b4", - "sha256:bb42f9b259c33662c6a9b866012f6908a91731a419e69304e1261ba3ab87b8d1", - "sha256:bca714d831e5b8860c3ab134c93aec63d1a4f493bed20084f54e3ce9f0a3bf99", - "sha256:bedd89c34ab62565d44745212814e4b57ef1c24ad4af9b29c504ce40f0dc6558", - "sha256:bfec934aac7f9fa95fc82147a4ba5db0a8bdc4ebf1e33b585ab8860beb10232f", - "sha256:c7046f7aa2db445daccc8424f50b47a66c4039c9f058246b43796aa818f8b751", - "sha256:d7e483f4791fbda60e23926b098702340504f7684ce7e1fd2c1bf02029288423", - "sha256:dd93162615870c976dba43963a24bb418b28448fef584f30755990c134a06a55", - "sha256:e4607d2d16330757818c9d6fba322c2e80b4b112ff24295d1343a80b876eb0ed", - "sha256:e9a680d9665f88346ed339888781f5236347933906c5a56348abb8261282ec48", - "sha256:edfcf93fd92e2f9eef640b3a7a40db20fe3c1d7c2c74faa41424c63dead61b76", - "sha256:f7e4a3c0c3c596296b37f8427c467c8e4336dc8d50f8ed38042e8ba79507b2c9", - "sha256:fff677fa4522dafb5a5e2c0cf909790d5d367326321aeabc0dffc9047cb235bd" + "sha256:093b3109c2747d5dc0fa4314b1caf4c7ca336d5c8c831e3cfbec06a7e861e1e6", + "sha256:186cb3bd77abf2ddcf722f755659559bfb157647b3fd3f32ea1c70e8311e8f6b", + "sha256:1b4eac3933c335d7f375639885765722534bb4e52e51cdc01a667eea822af9b6", + "sha256:1ff9f84b2098ef1b96255a80981ee10f4b5d49b6cfeeccf9632c2078cd86052e", + "sha256:28aa2ef06c904729620cc735262192e622db9136c26d8587f71f29ec7715628a", + "sha256:28b17ebbaee6587013be2f78dc4f6e95115e1ec8dd7647c4e7be048da749e48b", + "sha256:2c6c411d8c59afba95abccd2b418f30ade674186660a2d310d364843049fb2c1", + "sha256:2ffc813b01dc6473990f5e575f210ca5ac2f5465ace3908b78ffd6d20058aab5", + "sha256:48036698f20080462e981b18d77d574631a3d1fc2c33b416c6df299ec1d10b99", + "sha256:48f0eb5bcc87a9b2a95b345ed18d6400daaa86ca414f6840961ed85c342af8f4", + "sha256:4ba2c1f368bcf8551cdaa27eac525022471015633d5bdafbc4297e0511f62f51", + "sha256:53c7469b86a60fe2babca4f70111357e6e3d5150373bc85eb3b914356983e89a", + "sha256:6204d06bfa85f87625e1831ca663f9dba91ac8aec24b8c65d02fb25cbaf4b4d7", + "sha256:63c82c9e8ccc2fb4bfd87c24ffbac320f70b7c93b78f206c1f9c441fa3013a5f", + "sha256:70e571ae9ee0ff36ed37e2b2765445d54981e4d600eccdf6fe3838bc2538d157", + "sha256:95411abc0e36d18f54fa5e24d42960ea3f144fb16caaa5a8c2e492b5424cc82c", + "sha256:9837133b89ad017e50a02a3b46419869cf4e9aa02743e911b2a9e25fa6b05403", + "sha256:9bec63b1e20ef69484f530fb4b4837e050450637ff9acd6dccc7003c5013abf8", + "sha256:9d8edfb09ed2b865485530c13e269833dab62ab2d582fde21026c9039d4d0e62", + "sha256:9dac1924611698f8fe5b2e58601156c01da2b6c0758ba519003013a78280cf4d", + "sha256:9e1a72197529ea00357640f21d92ffc7024e156ef9ac36edf271c8335facbc1a", + "sha256:9e7094cf04e6042c4210a185fa7b9b8b3b789dd6d1de7b4f19452290838e48bd", + "sha256:a4efb70a62cbbbc052c67dc66b5448b0053b509732184af3e7859d05fdf6223c", + "sha256:a5dbdbb39c1b100df4d182c78949158073ca46ba2850c64fe02ffb1eb5b70903", + "sha256:aeea6ace30603ca9a8869853bb4a04c7446856d7789e36694cd887967b7621f6", + "sha256:b2489e70bfa2356f2d421106794507daccf6cc8711753c442fc97272437fc606", + "sha256:babd63fb7cb6b0440abb6d16aca2be63342a6eea3dc7b613bb7a9357dc36920f", + "sha256:c6fb6b9ed1d0be7fa2c90be8ad2442c14cbf84eb0709dd1afeeff1e511550041", + "sha256:cfd8e4c64c30a5219032e64404d468c425bdbc13b397da906fc9bee6591fc0dd", + "sha256:d17316100fcd0b6371ac9211351cb976fd0c2e12a859c1a57965e3ef7f3ed2bc", + "sha256:d38a49aa75a5759d0d118e26701d70c70a37b896379115f8386e91b0444bfa70", + "sha256:da25e75ba9f3fabc271673b6b413ca234994e6d3453424bea36bb5549c5bbaec", + "sha256:e255a8dd5572b0c66d6ee53597d36157ad6cf3bc1114f61c54a65189f996ab03", + "sha256:e8b09e2d90267717d850f2e2323919ea32004f55c40e5d53b41267e382446044", + "sha256:ecc81336b46e31ae9c9bdfa220082079914e31a476d088d3337ecf531d861228", + "sha256:effadcda9a129cc56408dd5b2ea20ee9edcea24bd58e6a1489fa27672d733182" ], "index": "pypi", - "version": "==1.4.32" + "version": "==1.4.35" }, "werkzeug": { "hashes": [ - "sha256:1421ebfc7648a39a5c58c601b154165d05cf47a3cd0ccb70857cbdacf6c8f2b8", - "sha256:b863f8ff057c522164b6067c9e28b041161b4be5ba4d0daceeaa50a163822d3c" + "sha256:3c5493ece8268fecdcdc9c0b112211acd006354723b280d643ec732b6d4063d6", + "sha256:f8e89a20aeabbe8a893c24a461d3ee5dad2123b05cc6abd73ceed01d39c3ae74" ], "index": "pypi", - "version": "==2.0.3" + "version": "==2.1.1" } }, "develop": {} diff --git a/config.dev.yml b/config.dev.yml index 61bb3a8..43830c1 100644 --- a/config.dev.yml +++ b/config.dev.yml @@ -2,5 +2,5 @@ SECRET_KEY: 'development' # Database configuration -SQLALCHEMY_DATABASE_URI: 'sqlite:////tmp/test.db' +SQLALCHEMY_DATABASE_URI: 'mysql+pymysql://tofu:development@db/tofu?charset=utf8mb4' SQLALCHEMY_ECHO: false diff --git a/docker-compose.yml b/docker-compose.yml index 4020a66..d1c5f1f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,4 +1,4 @@ -version: '3' +version: '3.9' services: backend: @@ -8,6 +8,9 @@ services: args: # Use an ".env" file to overwrite this variable if your local user's UID is not 1000. DEV_USER_UID: ${DEV_USER_UID:-1000} + depends_on: + db: + condition: service_healthy ports: - '5000:5000' volumes: @@ -16,5 +19,29 @@ services: - development.env command: flask run --host=0.0.0.0 + db: + image: mariadb + volumes: + - mariadb_data:/var/lib/mysql + environment: + MARIADB_DATABASE: tofu + MARIADB_USER: tofu + MARIADB_PASSWORD: development + MARIADB_ROOT_PASSWORD: development + healthcheck: + test: "mysqladmin ping -h 127.0.0.1 -u$$MARIADB_USER -p$$MARIADB_PASSWORD" + interval: 1s + timeout: 1s + retries: 20 + + adminer: + image: phpmyadmin + ports: + - '8099:80' + environment: + PMA_HOST: db + PMA_USER: tofu + PMA_PASSWORD: development + volumes: mariadb_data: