https://github.com/lucadb/verceltestws
https://github.com/lucadb/verceltestws
Last synced: 11 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/lucadb/verceltestws
- Owner: LucaDb
- License: mit
- Created: 2024-05-31T09:31:15.000Z (about 2 years ago)
- Default Branch: master
- Last Pushed: 2024-05-31T10:10:17.000Z (about 2 years ago)
- Last Synced: 2025-02-25T19:43:31.989Z (over 1 year ago)
- Language: TypeScript
- Homepage: https://verceltestws-web.vercel.app
- Size: 92.1 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Websolute
## Setup project
Create Vs solution & init git repo
### vs
```powershell
dotnet new sln --name ws-bom-sample-basic
dotnet sln add src/bowl src/mixer src/oven
```
### repo
```git
git init -b main
git add .
git commit -m "Init"
git remote add origin https://websolutespa@dev.azure.com/websolutespa/ws-bom-sample-basic/_git/ws-bom-sample-basic
git push -u origin --all
```
---
## Launch project
### serve
### docker stack
Check composer config & out dev/prod composer
```powershell
copy docker.env.sample docker.env.dev
copy docker.env.sample docker.env.prod
#edit docker.env.dev/prod
docker compose --env-file docker.env.dev config
docker compose --env-file docker.env.dev config > docker-compose-dev.yml
docker compose --env-file docker.env.prod config > docker-compose-prod.yml
```
Ensure to have a package-lock.json to speed up building time
```powershell
npm i --package-lock-only
```
Build from compose & run locally
```powershell
$PROJECT="websolute"
$TAG="main"
$node_version = (cat .nvmrc) -replace '[^0-9,.]',''
docker build --progress=plain -f ./src/bowl/Dockerfile --build-arg node_version=$node_version -t $PROJECT-bowl:$TAG .
docker build --progress=plain -f ./src/oven/Dockerfile -t $PROJECT-oven:$TAG ./src/oven
docker build --progress=plain -f ./src/mixer/Dockerfile --build-arg node_version=$node_version -t $PROJECT-mixer:$TAG .
docker compose --env-file docker.env.dev up --remove-orphans -d
#docker compose --env-file docker.env.local -f docker-compose-local.yml up --remove-orphans -d
#docker image prune
```
Tag/Push registry images
```powershell
$REGISTRY="wsweb.azurecr.io"
$PROJECT="websolute"
$TAG="main"
docker tag $PROJECT-bowl:$TAG $REGISTRY/$PROJECT-bowl:$TAG
docker tag $PROJECT-oven:$TAG $REGISTRY/$PROJECT-oven:$TAG
docker tag $PROJECT-mixer:$TAG $REGISTRY/$PROJECT-mixer:$TAG
#docker image prune
<#
.azure registry
Ensure login succeded before push images:
az login
az acr login -n $REGISTRY
#>
docker push $REGISTRY/$PROJECT-bowl:$TAG
docker push $REGISTRY/$PROJECT-oven:$TAG
docker push $REGISTRY/$PROJECT-mixer:$TAG
<#
.azure registry
Check azure registry images status:
az acr repository list --name $REGISTRY
az acr repository show --name $REGISTRY --repository $PROJECT-bowl
#>
```
Azure multi-container app
```powershell
$PROJECT="ws-bom-websolute"
$RESOURCEGROUP=""
$PLAN=""
<#
.service plan
Create a new service plan if not exists:
az appservice plan create --name $PLAN --resource-group $RESOURCEGROUP --sku S1 --is-linux
az appservice plan list
#>
az webapp create --resource-group $RESOURCEGROUP --plan $PLAN --name $PROJECT --multicontainer-config-type compose --multicontainer-config-file docker-compose-prod.yml
```
Enable Azure persistent volumes
```powershell
<#
This enable ${WEBAPP_STORAGE_HOME} env var
#>
$PROJECT="ws-bom-sample-basic"
$RESOURCEGROUP=""
az webapp config appsettings set --resource-group $RESOURCEGROUP --name $PROJECT --settings WEBSITES_ENABLE_APP_SERVICE_STORAGE=TRUE
```
In docker-compose prepend \${WEBAPP_STORAGE_HOME} to mount path
```yaml
volumes:
- ${WEBAPP_STORAGE_HOME}/data/mongo/dump:/data/dump
- ${WEBAPP_STORAGE_HOME}/data/mongo/backup:/data/backup
```
Azure SSH session
```powershell
$SUBSCRIPTION=""
$PROJECT="ws-bom-sample-basic"
$RESOURCEGROUP=""
#ensure remote debugger is disabled
az webapp config set --resource-group $RESOURCEGROUP -n $PROJECT --remote-debugging-enabled=false
az webapp create-remote-connection --subscription $SUBSCRIPTION --resource-group $RESOURCEGROUP -n $PROJECT
# ssh root@127.0.0.1 -p [local port created for TCP tunnel]
az webapp list-instances --name $PROJECT --resource-group $RESOURCEGROUP
az webapp ssh -n $PROJECT -g $RESOURCEGROUP
```
---