diff --git a/.gitignore b/.gitignore index 3c5b89c..005c8fd 100644 --- a/.gitignore +++ b/.gitignore @@ -158,3 +158,4 @@ cython_debug/ .vscode/ core/static/admin core/static/debug_toolbar +Makefile diff --git a/Makefile b/Makefile-dev similarity index 100% rename from Makefile rename to Makefile-dev diff --git a/Makefile-prod b/Makefile-prod new file mode 100644 index 0000000..934ed54 --- /dev/null +++ b/Makefile-prod @@ -0,0 +1,26 @@ +run: + docker-compose --env-file=stack.env up -d + +build: + docker-compose --env-file=stack.env build + +stop: + docker-compose --env-file=stack.env down + +log: + docker-compose --env-file=stack.env logs -f + +test: + docker-compose --env-file=stack.env run -e LIVE=$(LIVE) --rm app sh -c ". /venv/bin/activate && python manage.py test $(MODULES) -v 2" + +migrate: + docker-compose --env-file=stack.env run --rm app sh -c ". /venv/bin/activate && python manage.py migrate" + +makemigrations: + docker-compose --env-file=stack.env run --rm app sh -c ". /venv/bin/activate && python manage.py makemigrations" + +auth: + docker-compose --env-file=stack.env run --rm app sh -c ". /venv/bin/activate && python manage.py createsuperuser" + +token: + docker-compose --env-file=stack.env run --rm app sh -c ". /venv/bin/activate && python manage.py addstatictoken m" diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml new file mode 100644 index 0000000..e146517 --- /dev/null +++ b/docker-compose.dev.yml @@ -0,0 +1,172 @@ +version: "2.2" + +services: + app: + image: xf/fisk:prod + container_name: fisk + build: + context: . + args: + OPERATION: ${OPERATION} + volumes: + - ${PORTAINER_GIT_DIR}:/code + - ${PORTAINER_GIT_DIR}/docker/uwsgi.ini:/conf/uwsgi.ini + - ${APP_DATABASE_FILE}:/conf/db.sqlite3 + - fisk_static:${STATIC_ROOT} + #ports: + # - "8000:8000" # uwsgi socket + env_file: + - stack.env + volumes_from: + - tmp + depends_on: + # redis: + # condition: service_healthy + migration: + condition: service_started + collectstatic: + condition: service_started + networks: + - default + - xf + - elastic + + scheduling: + image: xf/fisk:prod + container_name: scheduling_fisk + build: + context: . + args: + OPERATION: ${OPERATION} + command: sh -c '. /venv/bin/activate && python manage.py scheduling' + volumes: + - ${PORTAINER_GIT_DIR}:/code + - ${PORTAINER_GIT_DIR}/docker/uwsgi.ini:/conf/uwsgi.ini + - ${APP_DATABASE_FILE}:/conf/db.sqlite3 + - fisk_static:${STATIC_ROOT} + env_file: + - stack.env + volumes_from: + - tmp + depends_on: + redis: + condition: service_healthy + migration: + condition: service_started + collectstatic: + condition: service_started + networks: + - default + - xf + - elastic + + migration: + image: xf/fisk:prod + container_name: migration_fisk + build: + context: . + args: + OPERATION: ${OPERATION} + command: sh -c '. /venv/bin/activate && python manage.py migrate --noinput' + volumes: + - ${PORTAINER_GIT_DIR}:/code + - ${APP_DATABASE_FILE}:/conf/db.sqlite3 + - fisk_static:${STATIC_ROOT} + volumes_from: + - tmp + env_file: + - stack.env + + collectstatic: + image: xf/fisk:prod + container_name: collectstatic_fisk + build: + context: . + args: + OPERATION: ${OPERATION} + command: sh -c '. /venv/bin/activate && python manage.py collectstatic --noinput' + volumes: + - ${PORTAINER_GIT_DIR}:/code + - ${APP_DATABASE_FILE}:/conf/db.sqlite3 + - fisk_static:${STATIC_ROOT} + volumes_from: + - tmp + env_file: + - stack.env + + nginx: + image: nginx:latest + container_name: nginx_fisk + ports: + - ${APP_PORT}:9999 + ulimits: + nproc: 65535 + nofile: + soft: 65535 + hard: 65535 + volumes: + - ${PORTAINER_GIT_DIR}:/code + - ${PORTAINER_GIT_DIR}/docker/nginx/conf.d/${OPERATION}.conf:/etc/nginx/conf.d/default.conf + - fisk_static:${STATIC_ROOT} + volumes_from: + - tmp + networks: + - default + - xf + depends_on: + app: + condition: service_started + + + # volumes_from: + # - tmp + # depends_on: + # redis: + # condition: service_healthy + + tmp: + image: busybox + container_name: tmp_fisk + command: chmod -R 777 /var/run/socks + volumes: + - /var/run/socks + + # For caching + redis: + image: redis + container_name: redis_fisk + command: redis-server /etc/redis.conf + ulimits: + nproc: 65535 + nofile: + soft: 65535 + hard: 65535 + volumes: + - ${PORTAINER_GIT_DIR}/docker/redis.conf:/etc/redis.conf + - fisk_redis_data:/data + volumes_from: + - tmp + healthcheck: + test: "redis-cli -s /var/run/socks/redis.sock ping" + interval: 2s + timeout: 2s + retries: 15 + + # pyroscope: + # image: "pyroscope/pyroscope:latest" + # ports: + # - "4040:4040" + # command: + # - "server" + +networks: + default: + driver: bridge + xf: + external: true + elastic: + external: true + +volumes: + fisk_static: {} + fisk_redis_data: {}