Barrito - barcode generator

Bence Balint 0d2be95904 Merge branch 'devops-41' of kraxor/barrito-backend into develop 3 jaren geleden
.idea 59b38f798a DEVOPS-34 setup mysql with docker 3 jaren geleden
app e724027dc7 DEVOPS-41 update readme 3 jaren geleden
.gitignore 759d923e80 DEVOPS-33 reorganise project for Docker 3 jaren geleden
Dockerfile e5e37d0332 DEVOPS-34 add alembic depencency + init 3 jaren geleden
README.md e724027dc7 DEVOPS-41 update readme 3 jaren geleden
docker-compose.yml f1767412ee DEVOPS-41 swap mysql --> postgresql 3 jaren geleden

README.md

Barrito backend

Barcode generator backend.

Build and run

Development:

In development mode, the application is run directly by flask using the built-in werkzeug server with FLASK_DEBUG=1 and automatic reload on code change. To start the application in development mode, listening on 0.0.0.0:8080, run:

docker-compose up

Or you can use BuildKit for faster (re)builds:

COMPOSE_DOCKER_CLI_BUILD=1 DOCKER_BUILDKIT=1 docker-compose up --build

Make sure you have BuildKit enabled in /etc/docker/daemon.json as well:

{ "features": { "buildkit": true } }
Production:

Build the image:

COMPOSE_DOCKER_CLI_BUILD=1 DOCKER_BUILDKIT=1 docker build -t barrito-backend_prod .

Start container:

# exposed by Docker
export IP=10.0.0.4
export PORT=8080

# external access (for download links)
export SERVER_URL=https://test.barrito.kraxor.net
export SERVER_PORT=80

# database
export DB_URI=postgresql://user:pass@db_host/db_name

docker run -d \
  --name barrito-backend \
  -p ${IP}:${PORT}:80 \
  --env SERVER_URL=${SERVER_URL} \
  --env SERVER_PORT=${SERVER_PORT} \
  --env DB_URI=${DB_URI} \
  barrito-backend_prod

Or to test with local db on localhost:

docker run \
  --name barrito-backend-local \
  -p 0.0.0.0:80:80 \
  --net=host \
  --env SERVER_URL=http://localhost \
  --env SERVER_PORT=80 \
  --env DB_URI=postgresql://barrito:barrito@172.17.0.1/barrito \
  barrito-backend_prod

Note that because of --net=host, Docker will disregard port settings, therefore you must have rights to open port 80 to run the above or it will fail silently. (TODO: use a different port inside Docker to circumvent this)