dockerized newsite mariadb setup
This commit is contained in:
		
							
								
								
									
										3
									
								
								backend/.dockerignore
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								backend/.dockerignore
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,3 @@
 | 
			
		||||
venv
 | 
			
		||||
migrations
 | 
			
		||||
 | 
			
		||||
@@ -1,5 +1,7 @@
 | 
			
		||||
# syntax=docker/dockerfile:1.4
 | 
			
		||||
FROM python:3-alpine AS builder
 | 
			
		||||
FROM python:3-slim-bookworm AS builder
 | 
			
		||||
 | 
			
		||||
RUN apt update && apt install -y libmariadb-dev gcc
 | 
			
		||||
 | 
			
		||||
WORKDIR /code
 | 
			
		||||
COPY requirements.txt /code
 | 
			
		||||
@@ -9,7 +11,7 @@ RUN target=/root/.cache/pip \
 | 
			
		||||
# Need to make this explicit as part of expansion, no migrations or venv
 | 
			
		||||
COPY . .
 | 
			
		||||
 | 
			
		||||
ENV FLASK_APP app.py
 | 
			
		||||
#ENV FLASK_APP app.py
 | 
			
		||||
 | 
			
		||||
# This might be scary to leave on
 | 
			
		||||
#ENV FLASK_ENV development
 | 
			
		||||
 
 | 
			
		||||
@@ -8,6 +8,7 @@
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
## pip:
 | 
			
		||||
mariadb may take extra work: gcc, libmariadb-dev 
 | 
			
		||||
```
 | 
			
		||||
pip install flask
 | 
			
		||||
pip install python-dotenv
 | 
			
		||||
@@ -17,6 +18,7 @@ pip install flask-migrate
 | 
			
		||||
pip install flask-login
 | 
			
		||||
pip install email-validator
 | 
			
		||||
pip install pydenticon
 | 
			
		||||
pip install mariadb
 | 
			
		||||
...
 | 
			
		||||
pip freeze > requirements.txt
 | 
			
		||||
```
 | 
			
		||||
 
 | 
			
		||||
@@ -1,42 +0,0 @@
 | 
			
		||||
## Workflow:
 | 
			
		||||
- should work with flask run and dockerfile build
 | 
			
		||||
- local dev
 | 
			
		||||
- local pip install
 | 
			
		||||
- record versionless pips manually here
 | 
			
		||||
- pip freeze snapshots into project requirements
 | 
			
		||||
- docker build copies frozen requirements
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
## pip:
 | 
			
		||||
```
 | 
			
		||||
pip install flask
 | 
			
		||||
pip install python-dotenv
 | 
			
		||||
pip install flask-wtf
 | 
			
		||||
pip install flask-sqlalchemy
 | 
			
		||||
pip install flask-migrate
 | 
			
		||||
pip install flask-login
 | 
			
		||||
pip install email-validator
 | 
			
		||||
 | 
			
		||||
pip freeze > requirements.txt
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
## db cheat:
 | 
			
		||||
```
 | 
			
		||||
flask db migrate -m "users table"
 | 
			
		||||
flask db upgrade
 | 
			
		||||
 | 
			
		||||
flask db downgrade [base]
 | 
			
		||||
flask db upgrade
 | 
			
		||||
```
 | 
			
		||||
## build:
 | 
			
		||||
 | 
			
		||||
Dockerfile needs explicitly defined copies for:
 | 
			
		||||
- app
 | 
			
		||||
- config
 | 
			
		||||
- project dir
 | 
			
		||||
- requirements
 | 
			
		||||
 | 
			
		||||
## notes:
 | 
			
		||||
- environment comes through project env passes through compose
 | 
			
		||||
- keep env untracked but templated
 | 
			
		||||
- no dotenv here, dotflaskenv goes into image
 | 
			
		||||
@@ -5,7 +5,7 @@ basedir = os.path.abspath(os.path.dirname(__file__))
 | 
			
		||||
 | 
			
		||||
class Config:
 | 
			
		||||
    SECRET_KEY = os.environ.get('FLASK_SECRET_KEY') or 'flasksk'
 | 
			
		||||
    SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.path.join(basedir, 'zapp.db')
 | 
			
		||||
    #SQLALCHEMY_DATABASE_URI = 'mysql://flasku:' + os.environ.get('MYSQL_PASSWORD') + '@db:3306/flask'
 | 
			
		||||
    #SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.path.join(basedir, 'zapp.db')
 | 
			
		||||
    SQLALCHEMY_DATABASE_URI = 'mariadb+mariadbconnector://flasku:' + os.environ.get('MYSQL_PASSWORD') + '@db:3306/flask'
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -21,3 +21,4 @@ SQLAlchemy==2.0.31
 | 
			
		||||
typing_extensions==4.12.2
 | 
			
		||||
Werkzeug==3.0.3
 | 
			
		||||
WTForms==3.1.2
 | 
			
		||||
mariadb
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user