Skip to content

Instantly share code, notes, and snippets.

@x-yuri

x-yuri/a.md Secret

Last active February 15, 2023 02:54
Show Gist options
  • Save x-yuri/9cc47b7eed1796b43596313beb16fead to your computer and use it in GitHub Desktop.
Save x-yuri/9cc47b7eed1796b43596313beb16fead to your computer and use it in GitHub Desktop.

index.js:

const express = require('express');
const PORT = 8080;
const HOST = '0.0.0.0';
const app = express();
app.get('/', (req, res) => {
  res.send('Hello World');
});
app.listen(PORT, HOST, () => {
  console.log(`Running on http://${HOST}:${PORT}`);
});

package.json:

{
  "dependencies": {
    "express": "4.x"
  }
}

Dockerfile (alpine + alpine):

FROM node:18-alpine AS node_modules
WORKDIR /app
COPY package.json package-lock.json ./
RUN npm install

FROM node:18-alpine
WORKDIR /app
RUN chown node: .
COPY --chown=node --from=node_modules /app/node_modules node_modules
COPY --chown=node . .
USER node

Dockerfile (debian + alpine):

FROM node:18 AS node_modules
WORKDIR /app
COPY package.json package-lock.json ./
RUN npm install

FROM node:18-alpine
WORKDIR /app
RUN chown node: .
COPY --chown=node --from=node_modules /app/node_modules node_modules
COPY --chown=node . .
USER node

Dockerfile (npm@9):

FROM alpine:3.17 AS node_modules
RUN apk add nodejs npm
WORKDIR /app
COPY package.json package-lock.json ./
RUN npm install

FROM alpine:3.17
RUN apk add nodejs shadow && useradd node
WORKDIR /app
RUN chown node: .
COPY --chown=node --from=node_modules /app/node_modules node_modules
COPY --chown=node . .
USER node
$ docker build -t i .
$ docker run --rm --init -p 8080:8080 i node index.js
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment