Use the same user as in production to facilitate local testing with the production image. Assign group 127 to the docker user to mirror CI and match production practices, even though the rationale for this group mapping is unclear.
136 lines
4.4 KiB
Plaintext
136 lines
4.4 KiB
Plaintext
load('ext://uibutton', 'cmd_button', 'bool_input', 'location')
|
|
load('ext://namespace', 'namespace_create', 'namespace_inject')
|
|
namespace_create('meet')
|
|
|
|
DEV_ENV = os.getenv('DEV_ENV', 'dev')
|
|
|
|
if DEV_ENV == 'dev-dinum':
|
|
update_settings(suppress_unused_image_warnings=["localhost:5001/meet-frontend-generic:latest"])
|
|
|
|
if DEV_ENV == 'dev-keycloak':
|
|
update_settings(suppress_unused_image_warnings=["localhost:5001/meet-frontend-dinum:latest"])
|
|
|
|
|
|
def clean_old_images(image_name):
|
|
local('docker images -q %s | tail -n +2 | xargs -r docker rmi' % image_name)
|
|
|
|
docker_build(
|
|
'localhost:5001/meet-backend:latest',
|
|
context='..',
|
|
dockerfile='../Dockerfile',
|
|
build_args={'DOCKER_USER': '1001:127'},
|
|
only=['./src/backend', './src/mail', './docker'],
|
|
target = 'backend-production',
|
|
live_update=[
|
|
sync('../src/backend', '/app'),
|
|
run(
|
|
'pip install -r /app/requirements.txt',
|
|
trigger=['./api/requirements.txt']
|
|
)
|
|
]
|
|
)
|
|
clean_old_images('localhost:5001/meet-backend')
|
|
|
|
docker_build(
|
|
'localhost:5001/meet-frontend-dinum:latest',
|
|
context='..',
|
|
build_args={'DOCKER_USER': '1001:127'},
|
|
dockerfile='../docker/dinum-frontend/Dockerfile',
|
|
only=['./src/frontend', './docker', './.dockerignore'],
|
|
target = 'frontend-production',
|
|
live_update=[
|
|
sync('../src/frontend', '/home/frontend'),
|
|
]
|
|
)
|
|
clean_old_images('localhost:5001/meet-frontend-dinum')
|
|
|
|
docker_build(
|
|
'localhost:5001/meet-frontend-generic:latest',
|
|
context='..',
|
|
dockerfile='../src/frontend/Dockerfile',
|
|
only=['./src/frontend', './docker', './.dockerignore'],
|
|
target = 'meet-dev',
|
|
live_update=[
|
|
sync('../src/frontend', '/home/frontend'),
|
|
]
|
|
)
|
|
clean_old_images('localhost:5001/meet-frontend-generic')
|
|
|
|
docker_build(
|
|
'localhost:5001/meet-summary:latest',
|
|
context='../src/summary',
|
|
build_args={'DOCKER_USER': '1001:127'},
|
|
dockerfile='../src/summary/Dockerfile',
|
|
only=['.'],
|
|
target = 'production',
|
|
live_update=[
|
|
sync('../src/summary', '/app'),
|
|
]
|
|
)
|
|
clean_old_images('localhost:5001/meet-summary')
|
|
|
|
docker_build(
|
|
'localhost:5001/meet-agents:latest',
|
|
context='../src/agents',
|
|
build_args={'DOCKER_USER': '1001:127'},
|
|
dockerfile='../src/agents/Dockerfile',
|
|
only=['.'],
|
|
target = 'production',
|
|
live_update=[
|
|
sync('../src/agents', '/app'),
|
|
]
|
|
)
|
|
clean_old_images('localhost:5001/meet-agents')
|
|
|
|
# Copy the mkcert root CA certificate to our Docker build context
|
|
# This is necessary because we need to inject the certificate into our LiveKit container
|
|
local_resource(
|
|
'copy-root-ca',
|
|
cmd='cp -f "$(mkcert -CAROOT)/rootCA.pem" ../docker/livekit/rootCA.pem',
|
|
deps=[], # No dependencies needed
|
|
)
|
|
# Build a custom LiveKit Docker image that includes our root CA certificate
|
|
# This allows LiveKit to trust our local development certificates
|
|
docker_build(
|
|
'localhost:5001/meet-livekit:latest',
|
|
context='../docker/livekit',
|
|
dockerfile='./../docker/livekit/Dockerfile',
|
|
only=['.'],
|
|
)
|
|
clean_old_images('localhost:5001/meet-livekit')
|
|
|
|
k8s_yaml(local('cd ../src/helm && helmfile -n meet -e ${DEV_ENV:-dev} template .'))
|
|
|
|
k8s_resource('minio-bucket', resource_deps=['minio'])
|
|
k8s_resource('meet-backend', resource_deps=['postgresql', 'minio', 'redis', 'livekit-livekit-server'])
|
|
k8s_resource('meet-backend-migrate', resource_deps=['meet-backend'])
|
|
k8s_resource('livekit-livekit-server-test-connection', resource_deps=['livekit-livekit-server'])
|
|
k8s_resource('keycloak', resource_deps=['kc-postgresql'])
|
|
k8s_resource('meet-backend-createsuperuser', resource_deps=['meet-backend-migrate'])
|
|
|
|
migration = '''
|
|
set -eu
|
|
# get k8s pod name from tilt resource name
|
|
POD_NAME="$(tilt get kubernetesdiscovery meet-backend -ojsonpath='{.status.pods[0].name}')"
|
|
kubectl -n meet exec "$POD_NAME" -- python manage.py makemigrations
|
|
'''
|
|
cmd_button('Make migration',
|
|
argv=['sh', '-c', migration],
|
|
resource='meet-backend',
|
|
icon_name='developer_board',
|
|
text='Run makemigration',
|
|
)
|
|
|
|
pod_migrate = '''
|
|
set -eu
|
|
# get k8s pod name from tilt resource name
|
|
POD_NAME="$(tilt get kubernetesdiscovery meet-backend -ojsonpath='{.status.pods[0].name}')"
|
|
kubectl -n meet exec "$POD_NAME" -- python manage.py migrate --no-input
|
|
'''
|
|
cmd_button('Migrate db',
|
|
argv=['sh', '-c', pod_migrate],
|
|
resource='meet-backend',
|
|
icon_name='developer_board',
|
|
text='Run database migration',
|
|
)
|