Here is an example to create a express application with the new domino-db npm module and run it in a docker container. Requirements are that node.js & Docker is installed. Everything is done in the command line and a text editor.
1. Install Express application generator
npm install express-generator -g
2. Create a fresh application with stylus engine
express -c stylus domino-express
3. Go to the newly created folder
cd domino-express/
4. Create a folder for the application
md app/
5. Copy all files to the app folder, only package.json should be left
6. Copy the domino-domino-db-1.0.0-package folder into the project folder
7. Create a file .dockerignore and with the following content:
node_modules
npm-debug.log
8. Create the Dockerfile with the following content:
FROM node:8
# Create app directory
WORKDIR /usr/src/app
# Install app dependencies
# A wildcard is used to ensure both package.json AND package-lock.json are copied
# where available (npm@5+)
COPY package*.json ./
# create a folder for the local domino-db package
RUN mkdir -p /src
COPY ./domino-domino-db-1.0.0-package /src/domino-domino-db-1.0.0-package
# install & rebuild
RUN npm install
RUN npm rebuild
# If you are building your code for production
# RUN npm install --only=production
# Bundle app source
COPY ./app .
EXPOSE 3000
CMD [ "npm", "start" ]
9. The directory structure should look like this:
/domino-express
|-app
|-...
|-domino-domino-db-1.0.0-package
|-...
|-.dockerignore
|-Dockerfile
|-package.json
10. Add domino-db to package.json
{
"name": "domino-express",
"version": "0.0.0",
"private": true,
"scripts": {
"start": "node ./bin/www"
},
"dependencies": {
"cookie-parser": "~1.4.3",
"debug": "~2.6.9",
"express": "~4.16.0",
"http-errors": "~1.6.2",
"jade": "~1.11.0",
"morgan": "~1.9.0",
"stylus": "0.54.5",
"@domino/domino-db": "file:/src/domino-domino-db-1.0.0-package"
}
}
11. Build the docker container (replace username with your docker id)
docker build -t {username}/domino-express .
12. Start the container
docker run -p 3000:3000 -d -it {username}/domino-express
13. Open it in your browser => http://localhost:3000
domino 10 excited parts begin :9
Nice little writeup. Should step 4 be `md app` not `cd app/` to create a directory?
Thanks for the hint. I have corrected it.
Pingback: node.js, domino-db & Docker (2): Dev Environment | blog@hasselba.ch
looks similar to file – application – new
Thanks for this 🙂
Pingback: node.js, domino-db & Docker (5): memcached | blog@hasselba.ch