Files
cadhub/app/api/src/docker/README.md
2021-06-29 17:34:03 +10:00

2.2 KiB

Serverless

We're using the serverless from work for deployment

sls deploy --stage stagename

But Kurt Hutten is the only one with credentials for deployment atm, though if you wanted to set your own account you could deploy to that if you wanted to test.

Testing changes locally

You'll need to have Docker installed

Because of the way the docker containers to be deployed as lambdas on aws are somewhat specialised for the purpose we're using docker-compose to spin one up for each function/endpoint. So we've added a aws-emulation layer

The docker build relies on a git ignored file, the aws-lambda-rie. Download it, then put it into app/api/src/docker/common/. alternatively you can put this download into the DockerFiles by reading the instructions at around line 29 of the DockerFiles (app/api/src/docker/openscad/Dockerfile & app/api/src/docker/cadquery/Dockerfile). However this will mean slower build times as it will need download this 14mb file every build.

you will also need to create a .env in app/api/src/docker/.env for the following env-vars DEV_AWS_SECRET_ACCESS_KEY, DEV_AWS_ACCESS_KEY_ID and DEV_BUCKET. Ask @irev-dev for credentials and he can sort you out.

Then cd into this folder cd api/src/docker and:

docker-compose up --build

The first time you run this, it has to build the main image it will take some time, but launching again will be quicker.

After which we'll also spin up a light express server to act as an emulator to transform some the request from the front end into how the lambda's expect them (This emulates the aws-api-gateway which changes tranforms the inbound requests somewhat).

yarn install
yarn emulate

You can now add CAD_LAMBDA_BASE_URL="http://localhost:8080" to you .env file and restart your main dev process (yarn rw dev) comment that line out if you want to go back to using the aws endpoint (and restart the dev process).

If you change anything in the api/src/docker/openscad directory, you will need to stop the docker process and restart it (will be fairly quick if you're only changing the js)