Migrate to Podman

This commit is contained in:
Mark Veidemanis 2023-07-06 16:11:02 +00:00
parent b4424a7782
commit 8ef39ffe48
Signed by: m
GPG Key ID: 5ACFCEED46C0904F
7 changed files with 82 additions and 78 deletions

View File

@ -2,8 +2,8 @@
FROM python:3 FROM python:3
ARG OPERATION ARG OPERATION
RUN useradd -d /code xf
RUN mkdir -p /code RUN mkdir -p /code
RUN useradd -d /code xf
RUN chown -R xf:xf /code RUN chown -R xf:xf /code
RUN mkdir -p /conf/static RUN mkdir -p /conf/static
@ -16,7 +16,7 @@ USER xf
ENV PYTHONDONTWRITEBYTECODE=1 ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1 ENV PYTHONUNBUFFERED=1
WORKDIR /code WORKDIR /code
COPY requirements.txt /code/ COPY --chown=xf:xf requirements.txt /code/
RUN python -m venv /venv RUN python -m venv /venv
RUN . /venv/bin/activate && pip install -r requirements.txt RUN . /venv/bin/activate && pip install -r requirements.txt
@ -25,4 +25,4 @@ RUN . /venv/bin/activate && pip install -r requirements.txt
CMD if [ "$OPERATION" = "uwsgi" ] ; then . /venv/bin/activate && uwsgi --ini /conf/uwsgi.ini ; else . /venv/bin/activate && exec python manage.py runserver 0.0.0.0:8000; fi CMD if [ "$OPERATION" = "uwsgi" ] ; then . /venv/bin/activate && uwsgi --ini /conf/uwsgi.ini ; else . /venv/bin/activate && exec python manage.py runserver 0.0.0.0:8000; fi
# CMD . /venv/bin/activate && uvicorn --reload --reload-include *.html --workers 2 --uds /var/run/socks/app.sock app.asgi:application # CMD . /venv/bin/activate && uvicorn --reload --reload-include *.html --workers 2 --uds /var/run/socks/app.sock app.asgi:application
# CMD . /venv/bin/activate && gunicorn -b 0.0.0.0:8000 --reload app.asgi:application -k uvicorn.workers.UvicornWorker # CMD . /venv/bin/activate && gunicorn -b 0.0.0.0:8000 --reload app.asgi:application -k uvicorn.workers.UvicornWorker

View File

@ -1,26 +1,26 @@
run: run:
docker-compose --env-file=stack.env up -d podman-compose --env-file=stack.env up -d
build: build:
docker-compose --env-file=stack.env build podman-compose --env-file=stack.env build
stop: stop:
docker-compose --env-file=stack.env down podman-compose --env-file=stack.env down
log: log:
docker-compose --env-file=stack.env logs -f podman-compose --env-file=stack.env logs -f
test: 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" podman-compose --env-file=stack.env run -e LIVE=$(LIVE) --rm app sh -c ". /venv/bin/activate && python manage.py test $(MODULES) -v 2"
migrate: migrate:
docker-compose --env-file=stack.env run --rm app sh -c ". /venv/bin/activate && python manage.py migrate" podman-compose --env-file=stack.env run --rm app sh -c ". /venv/bin/activate && python manage.py migrate"
makemigrations: makemigrations:
docker-compose --env-file=stack.env run --rm app sh -c ". /venv/bin/activate && python manage.py makemigrations" podman-compose --env-file=stack.env run --rm app sh -c ". /venv/bin/activate && python manage.py makemigrations"
auth: auth:
docker-compose --env-file=stack.env run --rm app sh -c ". /venv/bin/activate && python manage.py createsuperuser" podman-compose --env-file=stack.env run --rm app sh -c ". /venv/bin/activate && python manage.py createsuperuser"
token: token:
docker-compose --env-file=stack.env run --rm app sh -c ". /venv/bin/activate && python manage.py addstatictoken m" podman-compose --env-file=stack.env run --rm app sh -c ". /venv/bin/activate && python manage.py addstatictoken m"

View File

@ -57,18 +57,20 @@ INSTALLED_APPS = [
] ]
# Performance optimisations # Performance optimisations # COMMENTED DUE TO PODMAN ISSUE
CACHES = { # CACHES = {
"default": { # "default": {
"BACKEND": "django.core.cache.backends.redis.RedisCache", # "BACKEND": "django.core.cache.backends.redis.RedisCache",
"LOCATION": "unix:///var/run/socks/redis.sock", # "LOCATION": "unix:///var/run/socks/redis.sock",
"OPTIONS": { # "OPTIONS": {
"db": "10", # "db": "10",
"parser_class": "redis.connection.HiredisParser", # "parser_class": "redis.connection.HiredisParser",
"pool_class": "redis.BlockingConnectionPool", # "pool_class": "redis.BlockingConnectionPool",
}, # },
} # }
} # }
# END PODMAN ISSUE
# CACHE_MIDDLEWARE_ALIAS = 'default' # CACHE_MIDDLEWARE_ALIAS = 'default'
# CACHE_MIDDLEWARE_SECONDS = '600' # CACHE_MIDDLEWARE_SECONDS = '600'
# CACHE_MIDDLEWARE_KEY_PREFIX = '' # CACHE_MIDDLEWARE_KEY_PREFIX = ''

View File

@ -1,14 +1,6 @@
import os import os
import stripe
from django.conf import settings
os.environ["DJANGO_ALLOW_ASYNC_UNSAFE"] = "true" os.environ["DJANGO_ALLOW_ASYNC_UNSAFE"] = "true"
# from redis import StrictRedis # from redis import StrictRedis
# r = StrictRedis(unix_socket_path="/var/run/redis/redis.sock", db=0) # r = StrictRedis(unix_socket_path="/var/run/redis/redis.sock", db=0)
if settings.STRIPE_TEST:
stripe.api_key = settings.STRIPE_API_KEY_TEST
else:
stripe.api_key = settings.STRIPE_API_KEY_PROD

View File

@ -1,10 +1,16 @@
import stripe import stripe
from django.conf import settings from django.conf import settings
from lago_python_client import Client
from lago_python_client.clients.base_client import LagoApiError # from lago_python_client import Client
from lago_python_client.client import Client
from lago_python_client.exceptions import LagoApiError
from lago_python_client.models import Customer, CustomerBillingConfiguration from lago_python_client.models import Customer, CustomerBillingConfiguration
client = Client(api_key=settings.LAGO_API_KEY, api_url=settings.LAGO_URL) client = Client(api_key=settings.LAGO_API_KEY, api_url=settings.LAGO_URL)
if settings.STRIPE_TEST:
stripe.api_key = settings.STRIPE_API_KEY_TEST
else:
stripe.api_key = settings.STRIPE_API_KEY_PROD
def expand_name(first_name, last_name): def expand_name(first_name, last_name):

View File

@ -412,6 +412,7 @@ def execute_strategy(callback, strategy, func):
direction=direction, direction=direction,
**protection, **protection,
) )
log.debug(f"Created Trade: {new_trade}")
new_trade.save() new_trade.save()
if strategy.risk_model is not None: if strategy.risk_model is not None:

View File

@ -17,8 +17,8 @@ services:
# - "8000:8000" # uwsgi socket # - "8000:8000" # uwsgi socket
env_file: env_file:
- stack.env - stack.env
volumes_from: # volumes_from:
- tmp # - tmp
depends_on: depends_on:
# redis: # redis:
# condition: service_healthy # condition: service_healthy
@ -46,11 +46,11 @@ services:
- fisk_static:${STATIC_ROOT} - fisk_static:${STATIC_ROOT}
env_file: env_file:
- stack.env - stack.env
volumes_from: # volumes_from:
- tmp # - tmp
depends_on: depends_on:
redis: # redis:
condition: service_healthy # condition: service_healthy
migration: migration:
condition: service_started condition: service_started
collectstatic: collectstatic:
@ -72,8 +72,8 @@ services:
- ${PORTAINER_GIT_DIR}:/code - ${PORTAINER_GIT_DIR}:/code
- ${APP_DATABASE_FILE}:/conf/db.sqlite3 - ${APP_DATABASE_FILE}:/conf/db.sqlite3
- fisk_static:${STATIC_ROOT} - fisk_static:${STATIC_ROOT}
volumes_from: # volumes_from:
- tmp # - tmp
env_file: env_file:
- stack.env - stack.env
@ -89,27 +89,27 @@ services:
- ${PORTAINER_GIT_DIR}:/code - ${PORTAINER_GIT_DIR}:/code
- ${APP_DATABASE_FILE}:/conf/db.sqlite3 - ${APP_DATABASE_FILE}:/conf/db.sqlite3
- fisk_static:${STATIC_ROOT} - fisk_static:${STATIC_ROOT}
volumes_from: # volumes_from:
- tmp # - tmp
env_file: env_file:
- stack.env - stack.env
nginx: nginx:
image: nginx:latest image: nginxinc/nginx-unprivileged:latest
container_name: nginx_fisk container_name: nginx_fisk
ports: ports:
- ${APP_PORT}:9999 - ${APP_PORT}:9999
ulimits: # ulimits:
nproc: 65535 # nproc: 65535
nofile: # nofile:
soft: 65535 # soft: 65535
hard: 65535 # hard: 65535
volumes: volumes:
- ${PORTAINER_GIT_DIR}:/code - ${PORTAINER_GIT_DIR}:/code
- ${PORTAINER_GIT_DIR}/docker/nginx/conf.d/${OPERATION}.conf:/etc/nginx/conf.d/default.conf - ${PORTAINER_GIT_DIR}/docker/nginx/conf.d/${OPERATION}.conf:/etc/nginx/conf.d/default.conf
- fisk_static:${STATIC_ROOT} - fisk_static:${STATIC_ROOT}
volumes_from: # volumes_from:
- tmp # - tmp
networks: networks:
- default - default
- xf - xf
@ -124,33 +124,36 @@ services:
# redis: # redis:
# condition: service_healthy # condition: service_healthy
tmp: # tmp:
image: busybox # image: busybox
container_name: tmp_fisk # container_name: tmp_fisk
command: chmod -R 777 /var/run/socks # command: chmod -R 777 /var/run/socks
volumes: # volumes:
- /var/run/socks # - /var/run/socks
# For caching # # For caching
redis: # redis:
image: redis # image: redis
container_name: redis_fisk # container_name: redis_fisk
command: redis-server /etc/redis.conf # command: redis-server /etc/redis.conf
ulimits: # #ulimits:
nproc: 65535 # # nproc: 65535
nofile: # # nofile:
soft: 65535 # # soft: 65535
hard: 65535 # # hard: 65535
volumes: # volumes:
- ${PORTAINER_GIT_DIR}/docker/redis.conf:/etc/redis.conf # - ${PORTAINER_GIT_DIR}/docker/redis.conf:/etc/redis.conf
- fisk_redis_data:/data # - fisk_redis_data:/data
volumes_from: # volumes_from:
- tmp # - tmp
healthcheck: # healthcheck:
test: "redis-cli -s /var/run/socks/redis.sock ping" # test: "redis-cli -s /var/run/socks/redis.sock ping"
interval: 2s # interval: 2s
timeout: 2s # timeout: 2s
retries: 15 # retries: 15
# depends_on:
# tmp:
# condition: service_started
# pyroscope: # pyroscope:
# image: "pyroscope/pyroscope:latest" # image: "pyroscope/pyroscope:latest"