Compare commits
8 Commits
5a07318527
...
104-switch
| Author | SHA1 | Date | |
|---|---|---|---|
| a17f2ee322 | |||
| 96cddf347c | |||
| 835958b0c9 | |||
| d0c4fed31b | |||
| 9c68a54a5d | |||
| 1bfc952233 | |||
| 9a502df48d | |||
| 85b9c11bf1 |
@@ -1,4 +1,4 @@
|
|||||||
FROM --platform=linux/amd64 node:22-slim
|
FROM node:22
|
||||||
|
|
||||||
WORKDIR app
|
WORKDIR app
|
||||||
COPY ./api/dist ./api/dist
|
COPY ./api/dist ./api/dist
|
||||||
@@ -9,10 +9,10 @@ WORKDIR api
|
|||||||
RUN npm ci
|
RUN npm ci
|
||||||
|
|
||||||
WORKDIR /
|
WORKDIR /
|
||||||
COPY ./api/entrypoint.sh ./entrypoint.sh
|
COPY ./api/entrypoint.sh ./app/entrypoint.sh
|
||||||
RUN chmod +x entrypoint.sh
|
RUN chmod +x ./app/entrypoint.sh
|
||||||
|
|
||||||
EXPOSE 3000
|
EXPOSE 3000
|
||||||
|
|
||||||
ENTRYPOINT ["/entrypoint.sh"]
|
CMD ["./app/entrypoint.sh"]
|
||||||
# ENTRYPOINT ["tail", "-f", "/dev/null"]
|
# ENTRYPOINT ["tail", "-f", "/dev/null"]
|
||||||
@@ -1,3 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
npx typeorm migration:run -d ./app/api/dist/database/data-source.js
|
cd ./app
|
||||||
node ./app/api/dist/main.js
|
npx typeorm migration:run -d ./api/dist/database/data-source.js
|
||||||
|
node ./api/dist/main.js
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
dbs:
|
dbs:
|
||||||
- path: /var/lib/data/flying.db
|
- path: /mnt/data/flying.db
|
||||||
replicas:
|
replicas:
|
||||||
- path: /mnt/backup/flying.db
|
- path: /mnt/data/backup/flying.db
|
||||||
@@ -16,11 +16,11 @@ services:
|
|||||||
container_name: restore
|
container_name: restore
|
||||||
image: litestream/litestream:0.3.13
|
image: litestream/litestream:0.3.13
|
||||||
volumes:
|
volumes:
|
||||||
- ./database/flying.db:/var/lib/data/flying.db
|
- ./database/flying.db:/mnt/data/flying.db
|
||||||
- ./database/litestream/litestream.yml:/mnt/litestream/litestream.yml
|
- ./database/litestream/litestream.yml:/mnt/litestream/litestream.yml
|
||||||
- backup:/mnt/data/backup
|
- backup:/mnt/data/backup
|
||||||
- data:/var/lib/data
|
- data:/mnt/data
|
||||||
command: restore -config /mnt/litestream/litestream.yml -if-db-not-exists -if-replica-exists /var/lib/data/flying.db
|
command: restore -config /mnt/litestream/litestream.yml -if-db-not-exists -if-replica-exists /mnt/data/flying.db
|
||||||
|
|
||||||
app:
|
app:
|
||||||
container_name: flying
|
container_name: flying
|
||||||
@@ -31,9 +31,9 @@ services:
|
|||||||
env_file:
|
env_file:
|
||||||
- ./api/.env
|
- ./api/.env
|
||||||
environment:
|
environment:
|
||||||
- DB_PATH=../../var/lib/data/flying.db
|
- DB_PATH=../../mnt/data/flying.db
|
||||||
volumes:
|
volumes:
|
||||||
- data:/var/lib/data
|
- data:/mnt/data
|
||||||
depends_on:
|
depends_on:
|
||||||
restore:
|
restore:
|
||||||
condition: service_completed_successfully
|
condition: service_completed_successfully
|
||||||
@@ -44,7 +44,7 @@ services:
|
|||||||
volumes:
|
volumes:
|
||||||
- ./database/litestream/litestream.yml:/mnt/litestream/litestream.yml
|
- ./database/litestream/litestream.yml:/mnt/litestream/litestream.yml
|
||||||
- backup:/mnt
|
- backup:/mnt
|
||||||
- data:/var/lib/data
|
- data:/mnt/data
|
||||||
command: replicate -config /mnt/litestream/litestream.yml
|
command: replicate -config /mnt/litestream/litestream.yml
|
||||||
depends_on:
|
depends_on:
|
||||||
app:
|
app:
|
||||||
|
|||||||
@@ -1,8 +1,3 @@
|
|||||||
# data "azuread_application" "app_registration" {
|
|
||||||
# provider = azuread.external_tenant
|
|
||||||
# display_name = module.environment.app_reg_name
|
|
||||||
# }
|
|
||||||
|
|
||||||
resource "azurerm_container_app" "container_app" {
|
resource "azurerm_container_app" "container_app" {
|
||||||
name = module.environment.app_name
|
name = module.environment.app_name
|
||||||
container_app_environment_id = data.azurerm_container_app_environment.container_app_environment.id
|
container_app_environment_id = data.azurerm_container_app_environment.container_app_environment.id
|
||||||
@@ -14,7 +9,7 @@ resource "azurerm_container_app" "container_app" {
|
|||||||
max_replicas = 2
|
max_replicas = 2
|
||||||
|
|
||||||
init_container {
|
init_container {
|
||||||
args = ["restore", "-if-db-not-exists", "-if-replica-exists", "/var/lib/data/flying.db"]
|
args = ["restore", "-if-db-not-exists", "-if-replica-exists", "/mnt/data/flying.db"]
|
||||||
cpu = 0.25
|
cpu = 0.25
|
||||||
image = "litestream/litestream:0.5.2"
|
image = "litestream/litestream:0.5.2"
|
||||||
memory = "0.5Gi"
|
memory = "0.5Gi"
|
||||||
@@ -22,13 +17,13 @@ resource "azurerm_container_app" "container_app" {
|
|||||||
|
|
||||||
volume_mounts {
|
volume_mounts {
|
||||||
name = "data"
|
name = "data"
|
||||||
path = "/var/lib/data"
|
path = "/mnt/data"
|
||||||
|
sub_path = "data"
|
||||||
}
|
}
|
||||||
|
|
||||||
volume_mounts {
|
volume_mounts {
|
||||||
name = "backup"
|
name = "backup"
|
||||||
path = "/mnt/data"
|
path = "/mnt/data/backup"
|
||||||
sub_path = "data"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
volume_mounts {
|
volume_mounts {
|
||||||
@@ -47,13 +42,13 @@ resource "azurerm_container_app" "container_app" {
|
|||||||
|
|
||||||
volume_mounts {
|
volume_mounts {
|
||||||
name = "data"
|
name = "data"
|
||||||
path = "/var/lib/data"
|
path = "/mnt/data"
|
||||||
|
sub_path = "data"
|
||||||
}
|
}
|
||||||
|
|
||||||
volume_mounts {
|
volume_mounts {
|
||||||
name = "backup"
|
name = "backup"
|
||||||
path = "/mnt/data"
|
path = "/mnt/data/backup"
|
||||||
sub_path = "data"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
volume_mounts {
|
volume_mounts {
|
||||||
@@ -65,7 +60,7 @@ resource "azurerm_container_app" "container_app" {
|
|||||||
|
|
||||||
container {
|
container {
|
||||||
cpu = 0.25
|
cpu = 0.25
|
||||||
image = "noahspan/flying:19615036250"
|
image = "noahspan/flying:20586783321"
|
||||||
memory = "0.5Gi"
|
memory = "0.5Gi"
|
||||||
name = "flying"
|
name = "flying"
|
||||||
|
|
||||||
@@ -104,6 +99,11 @@ resource "azurerm_container_app" "container_app" {
|
|||||||
value = var.JWKS_URI
|
value = var.JWKS_URI
|
||||||
}
|
}
|
||||||
|
|
||||||
|
env {
|
||||||
|
name = "SESSION_SECRET"
|
||||||
|
secret_name = "session-secret"
|
||||||
|
}
|
||||||
|
|
||||||
env {
|
env {
|
||||||
name = "TENANT_ID"
|
name = "TENANT_ID"
|
||||||
value = var.EXTERNAL_TENANT_ID
|
value = var.EXTERNAL_TENANT_ID
|
||||||
@@ -111,7 +111,7 @@ resource "azurerm_container_app" "container_app" {
|
|||||||
|
|
||||||
env {
|
env {
|
||||||
name = "DB_PATH"
|
name = "DB_PATH"
|
||||||
value = "/var/lib/data/flying.db"
|
value = "/mnt/data/flying.db"
|
||||||
}
|
}
|
||||||
|
|
||||||
env {
|
env {
|
||||||
@@ -130,7 +130,8 @@ resource "azurerm_container_app" "container_app" {
|
|||||||
|
|
||||||
volume_mounts {
|
volume_mounts {
|
||||||
name = "data"
|
name = "data"
|
||||||
path = "/var/lib/data"
|
path = "/mnt/data"
|
||||||
|
sub_path = "data"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -179,6 +180,11 @@ resource "azurerm_container_app" "container_app" {
|
|||||||
value = var.DOCKER_IO_PASSWORD
|
value = var.DOCKER_IO_PASSWORD
|
||||||
}
|
}
|
||||||
|
|
||||||
|
secret {
|
||||||
|
name = "session-secret"
|
||||||
|
value = var.SESSION_SECRET
|
||||||
|
}
|
||||||
|
|
||||||
lifecycle {
|
lifecycle {
|
||||||
ignore_changes = [ template[0].container[0].image, template[0].container[0].image, template[0].init_container[0].image, registry[0].server ]
|
ignore_changes = [ template[0].container[0].image, template[0].container[0].image, template[0].init_container[0].image, registry[0].server ]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -36,6 +36,11 @@ variable "EXTERNAL_TENANT_ID" {
|
|||||||
type = string
|
type = string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
variable "SESSION_SECRET" {
|
||||||
|
sensitive = true
|
||||||
|
type = string
|
||||||
|
}
|
||||||
|
|
||||||
variable "TENANT_ID" {
|
variable "TENANT_ID" {
|
||||||
type = string
|
type = string
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user