ucd-library / rp-ucd-deployment

UC Davis Researcher Profiles Application Deployment
MIT License
0 stars 0 forks source link

Move towards eliminating .env requirement for dev,rc,experts #9

Open qjhart opened 3 years ago

qjhart commented 3 years ago

The plan for experts will continue to be routing all requests through a single router (router.experts.library.ucdavis.edu). I'd like to continue routing via different ports for our servers, and because of the number of installs, we will potentially be running two instances (like dev,rc) on one backend (eg. blue).

Since we have seperate docker-compose for each stage, I suggest that we update those compose files, for the default values for server names and ports. So we'd have something like:

  gateway:
    image: ucdlib/rp-ucd-gateway:dev
    environment:
      - ${SERVER_URL:-https://dev.experts.library.ucdavis.edu}
    ports:
      - ${HOST_PORT:-3006}:3000
    restart: on-failure

Also, we'd potentially limit the ports we'd promote to the OS on rc and prod.

The only downside would be developers testing different installs, but since the .env would still be read, that could be adjusted there, without modifing the docker-compose files.

jrmerz commented 3 years ago

What is the motivating factor for this issue?

While we might be able to do this, it won't be easy. We will need to

qjhart commented 3 years ago

I guess the main motivating factor is if one would pull rc, or a tagged version, it'd be nice if it didn't depend on an untracked .env file to work, and it seems like adding per/branch defaults is so similar to per/branch images that it wasn't a heavy lift. I don't understand why the need for per merge mods would be. Just add a few more variables to the .tmpl files.

Secrets is a good question, I believe fuseki handles lack of a secret okay, but the password is somewhat hidden. Do we want to investigate secrets via Google's cloud setup?

Regarding ports, that's sort of true, but remember developers can just set HOST_PORT and FUSKEKI_HOST_POST in their .env files, and have a per-machine setup anyways.

The only reason I could see for multiple yaml files is if we wanted to prevent some setups from exposing all the ports to the OS, which could be a difference between production and dev enviroments, but would be anyways.