I'm confused about the proper way to do hot deployment when developing a node js app while using S2I for building images. With Docker, the answer is to use bind mounts, which allows changes made on the host be become visible to nodemon running inside the container. The S2I docs mention that setting an environment variable DEV_MODE=true while starting the container from the image that it output enables hot deployment, but the nodemone running inside the container watches for changes inside the container not for changes on the host. Doing bind mounts doesn't work because the node_modules directory is not present on the host but only in the container, and that causes module not found errors. It seems like I would have to bind mount when starting the container, but then issue a mount of node_modules directory inside the container, but that doesn't sound right. What's the proper node js S2I development workflow setup?
Related Questions in NODE.JS
- Using Puppeteer to scrape a public API only when the data changes
- How to request administrator rights?
- How do I link two models in mongoose?
- Variable inside a Variable, not updating
- Unable to Post Form Data to MongoDB because of picturepath
- Connection terminated unexpectedly while performing multi row insert using pg-promise
- Processing multiple forms in nodejs and postgresql
- Node.js Server + Socket.IO + Android Mobile Applicatoin XHR Polling Error...?
- How to change the Font Weight of a SelectValue component in React when a SelectItem is selected?
- My unban and ban commands arent showing when i put the slash
- how to make read only file/directory in Mac writable
- How can I outsource worker processes within a for loop?
- Get remote MKV file metadata using nodejs
- Adding google-profanity-words to web page
- Products aren't displayed after fetching data from mysql db (node.js & express)
Related Questions in S2I
- Openshift S2I not overriding scripts in the image after build
- The s2i build --as-dockerfile command get a warning
- Nodejs hot deployment workflow with S2I
- Source To Image not finding C++ libs
- How to supply multiple ImagePullSecrets to an s2i build in OpenShift
- S2i build command pass user name password in Azure Devops pipeline
- OpenShift Source to Image push to private artifactory
- DotnetCore Custom S2i OpenShift Image
- Openshift Docker Strategy - not able to pull maven artifacts from private repo
- Openshift source to image build strategy
- How to deploy laravel project by openshift
- Build image with s2i for local repository
- Getting error when passing assemble script to build config through Github source code url in OpenShift
- What is the difference between normal docker image and s2i image?
- s2i build source code volume map instead of --copy or how do I access build output directory after s2i executed?
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Popular Tags
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
I discovered a way to accomplish this using rsync.
I defined a "hot" development script in package.json
The hot script is a bash script that starts two instances of nodemon. The first instance and looks for changes in the /host directory, which will be bind-mounted into the container, and starts rsync to copy changes to the container's source directory. The second instance looks for changes in the container's source directory and restarts the server. In this example, only the index.js file is rsync'ed. Also, I had to start the first instance in the background.
Building with a plain s2i build.
Running with the NPM_RUN environment variable set to hot and bind mounting the current directory with the source code to the container's /host directory.
With this setup I can make quickly make small changes on the host and have the server restart automatically in the container.