1

I'm currently working on getting a good workflow going on, from development to a kubernetes deployment on cloud platform.

I'm pretty comfortable with various docker commands, but rewriting long commands each time is getting painful.

For example, for deploying docker images to google cloud I need to tag and push them to google gcloud.

docker tag my-image gcr.io/my-project/my-image:test gcloud docker -- push gcr.io/my-project/my-image 

This would obviously be quite painful to write out everyday, so for conveinience I could put these into package json and run them with something like npm run docker-image-release.

The question I have is - is mixing package.json and docker/deployment stuff frowned upon? Or is this a perfectly reasonable project structure?

If it is a bad idea - what's the best way to conveniently remember commands I'm using a lot?

3
  • 1
    What about Shell Scripts? When I'm working with dockers, I usually have 3 : DockerBuild.sh, Dockerrun.sh (which stops and removes running containers) and Dockerpublish.sh. Moreover, the scripts are stored in the scm alongside with the src, so that I can reuse them for CI and CD. Commented Feb 15, 2018 at 6:36
  • @Laiv Thanks for the message. I actually have been doing this as well - but I generally think that bash scripts are a little messy in my code. Commented Feb 15, 2018 at 8:25
  • Most people have a scripts folder for just this purpose. Commented Feb 15, 2018 at 15:51

1 Answer 1

4

If it's an entirely private Node module, and it works for you, then go ahead.

However, I'd say the "correct" answer is No because if you published the module (even to a private corporate npm repo), you're now leaking deployment stuff into the app's configuration. Now you've given anyone that installs your project a way to mess with your build process.

Also, it's just bad separation of concerns. npm is a package manager, not a build tool.

2
  • Thanks for the answer. I've updated my question to ask if it's not a good way to go - then what is? Shell scripts? Commented Feb 15, 2018 at 8:28
  • Shell scripts or whatever that works for you. IMO the building, the deploying and the delivering should be processes totally untied from each other. So that you can orchestrate these processes at will. Just laying (at least) on a very basic layer, the OS. If you don't like shell scripts, I would say Make files, but Make files require us to have certain dev tools that in certain environments could be forbidden. Commented Feb 15, 2018 at 10:12

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.