fix(core): update
This commit is contained in:
parent
ca92e81fae
commit
5266959d11
@ -6,7 +6,20 @@
|
|||||||
"gitrepo": "ht-docker-node",
|
"gitrepo": "ht-docker-node",
|
||||||
"shortDescription": "docker image with nodejs and shipzone.io support",
|
"shortDescription": "docker image with nodejs and shipzone.io support",
|
||||||
"npmPackagename": "@hosttoday/ht-docker-node",
|
"npmPackagename": "@hosttoday/ht-docker-node",
|
||||||
"license": "MIT"
|
"license": "MIT",
|
||||||
|
"description": "A Docker image that integrates Node.js with shipzone.io support.",
|
||||||
|
"keywords": [
|
||||||
|
"Docker",
|
||||||
|
"Node.js",
|
||||||
|
"shipzone.io",
|
||||||
|
"npm",
|
||||||
|
"CI",
|
||||||
|
"git",
|
||||||
|
"ssh",
|
||||||
|
"npmci",
|
||||||
|
"node version management",
|
||||||
|
"typescript"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"npmci": {
|
"npmci": {
|
||||||
|
16
package.json
16
package.json
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "ht-docker-node",
|
"name": "ht-docker-node",
|
||||||
"version": "5.0.132",
|
"version": "5.0.132",
|
||||||
"description": "docker image with nodejs and shipzone.io support",
|
"description": "A Docker image that integrates Node.js with shipzone.io support.",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"test": "echo \"no npm test specified\"",
|
"test": "echo \"no npm test specified\"",
|
||||||
@ -31,5 +31,17 @@
|
|||||||
],
|
],
|
||||||
"directories": {
|
"directories": {
|
||||||
"test": "test"
|
"test": "test"
|
||||||
}
|
},
|
||||||
|
"keywords": [
|
||||||
|
"Docker",
|
||||||
|
"Node.js",
|
||||||
|
"shipzone.io",
|
||||||
|
"npm",
|
||||||
|
"CI",
|
||||||
|
"git",
|
||||||
|
"ssh",
|
||||||
|
"npmci",
|
||||||
|
"node version management",
|
||||||
|
"typescript"
|
||||||
|
]
|
||||||
}
|
}
|
292
readme.md
292
readme.md
@ -1,59 +1,269 @@
|
|||||||
# @hosttoday/ht-docker-node
|
```markdown
|
||||||
docker image with nodejs and [ship.zone](https://ship.zone) support
|
# ht-docker-node
|
||||||
|
docker image with nodejs and shipzone.io support
|
||||||
|
|
||||||
## Availabililty and Links
|
## Install
|
||||||
* [npmjs.org (npm package)](https://www.npmjs.com/package/@hosttoday/ht-docker-node)
|
|
||||||
* [gitlab.com (source)](https://gitlab.com/hosttoday/ht-docker-node)
|
|
||||||
* [github.com (source mirror)](https://github.com/hosttoday/ht-docker-node)
|
|
||||||
* [docs (typedoc)](https://hosttoday.gitlab.io/ht-docker-node/)
|
|
||||||
|
|
||||||
## Status for master
|
To get started with `ht-docker-node`, you need to have Docker installed on your machine. You can then pull the desired flavor of the Docker image from the relevant Docker registry.
|
||||||
[![build status](https://gitlab.com/hosttoday/ht-docker-node/badges/master/build.svg)](https://gitlab.com/hosttoday/ht-docker-node/commits/master)
|
|
||||||
[![coverage report](https://gitlab.com/hosttoday/ht-docker-node/badges/master/coverage.svg)](https://gitlab.com/hosttoday/ht-docker-node/commits/master)
|
Example:
|
||||||
[![npm downloads per month](https://img.shields.io/npm/dm/@hosttoday/ht-docker-node.svg)](https://www.npmjs.com/package/@hosttoday/ht-docker-node)
|
```bash
|
||||||
[![Known Vulnerabilities](https://snyk.io/test/npm/@hosttoday/ht-docker-node/badge.svg)](https://snyk.io/test/npm/@hosttoday/ht-docker-node)
|
docker pull registry.gitlab.com/hosttoday/ht-docker-node:latest
|
||||||
[![TypeScript](https://img.shields.io/badge/TypeScript->=%203.x-blue.svg)](https://nodejs.org/dist/latest-v10.x/docs/api/)
|
```
|
||||||
[![node](https://img.shields.io/badge/node->=%2010.x.x-blue.svg)](https://nodejs.org/dist/latest-v10.x/docs/api/)
|
|
||||||
[![JavaScript Style Guide](https://img.shields.io/badge/code%20style-prettier-ff69b4.svg)](https://prettier.io/)
|
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
The purpose of this Docker image is to provide a robust base for node apps and CI.
|
`ht-docker-node` offers a variety of Docker image flavors to suit different needs. Below, we'll guide you through different use cases and configurations using these Docker images.
|
||||||
It comes in different flavours and all of them have node, npm, git and ssh in PATH.
|
|
||||||
|
|
||||||
The **:npmci flavour** has npmci in path and can install any required node version and update PATH accordingly:
|
### Flavour Overview
|
||||||
|
|
||||||
```Dockerfile
|
- **:lts** - Node LTS version, equivalent to :latest
|
||||||
FROM hosttoday/ht-docker-node:npmci
|
- **:stable** - Node stable version
|
||||||
RUN npmci install [node_version_number] // this installs node using node and sets the default to the new node and npm versions
|
- **:npmci** - `npmci` preinstalled
|
||||||
|
- **:npmts** - `npmci` + `npmts` preinstalled
|
||||||
|
- **:npmpage** - `npmci` + `npmts` + `npmpage` preinstalled
|
||||||
|
- **:mongo** - `npmci` + `npmts` + `mongo`
|
||||||
|
|
||||||
|
### Basic Usage
|
||||||
|
|
||||||
|
To start a container with the `lts` flavour, you can use the following command:
|
||||||
|
```bash
|
||||||
|
docker run -it --name your_container_name registry.gitlab.com/hosttoday/ht-docker-node:lts
|
||||||
```
|
```
|
||||||
|
|
||||||
## Availability
|
### Using `npmci`
|
||||||
|
|
||||||
| Registry | Image Path |
|
The `:npmci` flavour includes `npmci`, a utility for managing Node.js versions and npm installations. Here's an example of how you can use it:
|
||||||
| --------------- | -------------------------------------------- |
|
|
||||||
| GitLab Registry | registry.gitlab.com/hosttoday/ht-docker-node |
|
|
||||||
| Docker Hub | hosttoday/ht-docker-node |
|
|
||||||
|
|
||||||
## Flavour Overview
|
```Dockerfile
|
||||||
|
FROM registry.gitlab.com/hosttoday/ht-docker-node:npmci
|
||||||
|
RUN npmci install 14.17.0
|
||||||
|
```
|
||||||
|
|
||||||
- **:lts** - node lts version, equals :latest
|
In this example, `npmci` installs Node.js version `14.17.0` and sets it as the default.
|
||||||
- **:stable** - node stable version
|
|
||||||
- **:npmci** - npmci preinstalled
|
|
||||||
- **:npmts** - npmci + npmts preinstalled
|
|
||||||
- **:npmpage** - npmci + npmts + npmpage preinstalled
|
|
||||||
- **:mongo** - npmci + npmts + mongo
|
|
||||||
|
|
||||||
For further information read the linked docs at the top of this README.
|
### Custom Dockerfile with `npmci` and your Node.js App
|
||||||
|
|
||||||
> MIT licensed | **©** [Lossless GmbH](https://lossless.gmbh)
|
You can create a custom Dockerfile for your Node.js application using the `:npmci` flavour:
|
||||||
> | By using this npm module you agree to our [privacy policy](https://lossless.gmbH/privacy.html)
|
|
||||||
|
|
||||||
[![repo-footer](https://hosttoday.gitlab.io/assets/repo-footer.svg)](https://host.today)
|
```Dockerfile
|
||||||
|
# Use the ht-docker-node image with npmci
|
||||||
|
FROM registry.gitlab.com/hosttoday/ht-docker-node:npmci
|
||||||
|
|
||||||
For further information read the linked docs at the top of this readme.
|
# Install a specific Node.js version
|
||||||
|
RUN npmci install 14.17.0
|
||||||
|
|
||||||
> MIT licensed | **©** [Lossless GmbH](https://lossless.gmbh)
|
# Create app directory
|
||||||
| By using this npm module you agree to our [privacy policy](https://lossless.gmbH/privacy)
|
WORKDIR /usr/src/app
|
||||||
|
|
||||||
[![repo-footer](https://lossless.gitlab.io/publicrelations/repofooter.svg)](https://maintainedby.lossless.com)
|
# Copy package.json and package-lock.json
|
||||||
|
COPY package*.json ./
|
||||||
|
|
||||||
|
# Install app dependencies
|
||||||
|
RUN npm install
|
||||||
|
|
||||||
|
# Bundle app source
|
||||||
|
COPY . .
|
||||||
|
|
||||||
|
# Expose port
|
||||||
|
EXPOSE 8080
|
||||||
|
|
||||||
|
# Start the application
|
||||||
|
CMD ["node", "index.js"]
|
||||||
|
```
|
||||||
|
|
||||||
|
To build the Docker image:
|
||||||
|
```bash
|
||||||
|
docker build -t your_app_name .
|
||||||
|
```
|
||||||
|
|
||||||
|
To run the container:
|
||||||
|
```bash
|
||||||
|
docker run -p 8080:8080 --name your_container_name your_app_name
|
||||||
|
```
|
||||||
|
|
||||||
|
### Multi-Stage Builds for Production
|
||||||
|
|
||||||
|
For a leaner production image, you can use multi-stage builds. Here’s an example:
|
||||||
|
|
||||||
|
```Dockerfile
|
||||||
|
# Stage 1: Build
|
||||||
|
FROM registry.gitlab.com/hosttoday/ht-docker-node:npmci as build
|
||||||
|
|
||||||
|
RUN npmci install 14.17.0
|
||||||
|
|
||||||
|
WORKDIR /usr/src/app
|
||||||
|
|
||||||
|
COPY package*.json ./
|
||||||
|
RUN npm install
|
||||||
|
|
||||||
|
COPY . .
|
||||||
|
RUN npm run build
|
||||||
|
|
||||||
|
# Stage 2: Production
|
||||||
|
FROM registry.gitlab.com/hosttoday/ht-docker-node:lts
|
||||||
|
|
||||||
|
WORKDIR /usr/src/app
|
||||||
|
COPY --from=build /usr/src/app/dist ./
|
||||||
|
|
||||||
|
EXPOSE 8080
|
||||||
|
CMD ["node", "index.js"]
|
||||||
|
```
|
||||||
|
|
||||||
|
### Using with MongoDB (`:mongo`)
|
||||||
|
|
||||||
|
The `:mongo` flavour contains a MongoDB installation alongside Node.js. Here’s how you can utilize it in your Dockerfile:
|
||||||
|
|
||||||
|
```Dockerfile
|
||||||
|
FROM registry.gitlab.com/hosttoday/ht-docker-node:mongo
|
||||||
|
|
||||||
|
# Setup mongo and node environment:
|
||||||
|
RUN npm install -g mongodb
|
||||||
|
|
||||||
|
# Working directory
|
||||||
|
WORKDIR /usr/src/app
|
||||||
|
|
||||||
|
# Copy MongoDB config
|
||||||
|
COPY mongod.conf /etc/mongod.conf
|
||||||
|
|
||||||
|
# Start MongoDB service
|
||||||
|
CMD ["mongod", "--config", "/etc/mongod.conf"] && node index.js
|
||||||
|
```
|
||||||
|
|
||||||
|
### Using `npmts` and `npmpage`
|
||||||
|
|
||||||
|
The `:npmts` and `:npmpage` flavours are useful for projects that use TypeScript or require page generation.
|
||||||
|
|
||||||
|
Here’s an example on how to work with `:npmts`:
|
||||||
|
|
||||||
|
```Dockerfile
|
||||||
|
FROM registry.gitlab.com/hosttoday/ht-docker-node:npmts
|
||||||
|
|
||||||
|
# Install necessary TypeScript packages
|
||||||
|
RUN npm install -g typescript
|
||||||
|
|
||||||
|
# Working directory
|
||||||
|
WORKDIR /usr/src/app
|
||||||
|
|
||||||
|
# Copy package.json and package-lock.json
|
||||||
|
COPY package*.json ./
|
||||||
|
|
||||||
|
# Install dependencies
|
||||||
|
RUN npm install
|
||||||
|
|
||||||
|
# Copy the rest of your files
|
||||||
|
COPY . .
|
||||||
|
|
||||||
|
# Compile TypeScript
|
||||||
|
RUN npm run build
|
||||||
|
|
||||||
|
# Expose port and start the server
|
||||||
|
EXPOSE 3000
|
||||||
|
CMD ["npm", "start"]
|
||||||
|
```
|
||||||
|
|
||||||
|
### Comprehensive Use Case Example
|
||||||
|
|
||||||
|
The following example covers multiple aspects including environment variables, volume mounting, and networking.
|
||||||
|
|
||||||
|
#### Dockerfile:
|
||||||
|
```Dockerfile
|
||||||
|
FROM registry.gitlab.com/hosttoday/ht-docker-node:npmci
|
||||||
|
|
||||||
|
# Set environment variables
|
||||||
|
ENV NODE_ENV=production
|
||||||
|
ENV PORT=3000
|
||||||
|
|
||||||
|
# Install desired Node.js version
|
||||||
|
RUN npmci install 16.0.0
|
||||||
|
|
||||||
|
# Create app directory
|
||||||
|
WORKDIR /usr/src/app
|
||||||
|
|
||||||
|
# Copy package.json and package-lock.json
|
||||||
|
COPY package*.json ./
|
||||||
|
|
||||||
|
# Install app dependencies
|
||||||
|
RUN npm ci
|
||||||
|
|
||||||
|
# Bundle app source
|
||||||
|
COPY . .
|
||||||
|
|
||||||
|
# Compile TypeScript
|
||||||
|
RUN npm run build
|
||||||
|
|
||||||
|
# Expose app port
|
||||||
|
EXPOSE 3000
|
||||||
|
|
||||||
|
# Start the application
|
||||||
|
CMD ["npm", "start"]
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Docker-Compose Configuration
|
||||||
|
|
||||||
|
If using Docker-Compose, create a `docker-compose.yml` file:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
version: '3.8'
|
||||||
|
|
||||||
|
services:
|
||||||
|
app:
|
||||||
|
image: your_app_name
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
ports:
|
||||||
|
- '3000:3000'
|
||||||
|
environment:
|
||||||
|
- NODE_ENV=production
|
||||||
|
volumes:
|
||||||
|
- .:/usr/src/app
|
||||||
|
- /usr/src/app/node_modules
|
||||||
|
networks:
|
||||||
|
- app-network
|
||||||
|
|
||||||
|
networks:
|
||||||
|
app-network:
|
||||||
|
driver: bridge
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Running with Docker and Docker-Compose
|
||||||
|
|
||||||
|
To build the image:
|
||||||
|
```bash
|
||||||
|
docker-compose build
|
||||||
|
```
|
||||||
|
|
||||||
|
To run the services:
|
||||||
|
```bash
|
||||||
|
docker-compose up
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Accessing the Container
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker exec -it your_container_name /bin/sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Conclusion
|
||||||
|
|
||||||
|
`ht-docker-node` offers a flexible, multifaceted solution for deploying Node.js applications in Docker containers. By leveraging its different flavours, you can efficiently manage Node.js versions, incorporate MongoDB, and handle TypeScript projects. Whether you are using simple Docker commands or elaborate Docker-Compose configurations, `ht-docker-node` caters to diverse deployment scenarios.
|
||||||
|
|
||||||
|
## License and Legal Information
|
||||||
|
|
||||||
|
This repository contains open-source code that is licensed under the MIT License. A copy of the MIT License can be found in the [license](license) file within this repository.
|
||||||
|
|
||||||
|
**Please note:** The MIT License does not grant permission to use the trade names, trademarks, service marks, or product names of the project, except as required for reasonable and customary use in describing the origin of the work and reproducing the content of the NOTICE file.
|
||||||
|
|
||||||
|
### Trademarks
|
||||||
|
|
||||||
|
This project is owned and maintained by Task Venture Capital GmbH. The names and logos associated with Task Venture Capital GmbH and any related products or services are trademarks of Task Venture Capital GmbH and are not included within the scope of the MIT license granted herein. Use of these trademarks must comply with Task Venture Capital GmbH's Trademark Guidelines, and any usage must be approved in writing by Task Venture Capital GmbH.
|
||||||
|
|
||||||
|
### Company Information
|
||||||
|
|
||||||
|
Task Venture Capital GmbH
|
||||||
|
Registered at District court Bremen HRB 35230 HB, Germany
|
||||||
|
|
||||||
|
For any legal inquiries or if you require further information, please contact us via email at hello@task.vc.
|
||||||
|
|
||||||
|
By using this repository, you acknowledge that you have read this section, agree to comply with its terms, and understand that the licensing of the code does not imply endorsement by Task Venture Capital GmbH of any derivative works.
|
||||||
|
Loading…
Reference in New Issue
Block a user