Simple Docker tagging and publishing from npm

Downloads in past


1102.1.25 years ago7 years agoMinified + gzip package size for @vanioinformatika/docker-publish in KB


Docker Publish

Travis Standard - JavaScript Style Guide npm downloads

Simple Docker tagging and publishing with 'npm version'


Do not forget installing docker and running docker login before using it!
npm i -D @vanioinformatika/docker-publish

Best practice

Using npm run postversion: building image, creating docker tags and push into Docker Registry with one command.
In package.json set postversion:
"preversion": "git push && npm install && npm test",
"version": "",
"postversion": "git push && git push --tags && docker build -t $npm_package_config_docker_ns/$npm_package_name:latest . && docker-publish"

or with hands:
docker build -t namespace/appname:latest .
node ./node_modules/.bin/docker-publish


There is zero configuration. All parameters comes from package.json: $npmpackagename and $npmpackageversion variable (name and version properties).
Maybe you want to use your own private docker repository, in this case please see the next chapter.


Optionally, in package.json you can customize your docker properties:
"version": "1.3.5",
"name": "docker-publish",
"config": {
  "docker": {
    "ns": "namespace",
    "url": "docker.yourcompany.com:5000",
    "name": "myapp",
    "skip": false,
    "silence": false,
    "strictSemver": false

CLI parameters could overwites package.json properties (except version number).
  • DOCKERNS: your namespace for image; namespace/imagename:tag Default: empty

  • DOCKERURL: your private docker repository URL; docker.yourcompany.com:5000

  • DOCKERNAME: overwrite image name. Default: package.json name properties

  • DOCKERSKIP: Skip Docker tag and push commands (dry run with logging). Default: false

  • DOCKERSILENCE: Do not logging. Default: false

  • DOCKERSTRICTSEMVER: Strict semantic versioning tag. Default: false. If it is true, then only one tag will be created on docker image as https://semver.org defined and there is no 'v' before version number.


Best practice:
postversion contains image building and docker-publish, and running npm version
docker tag docker-publish:latest docker-publish:v1
docker tag docker-publish:latest docker-publish:v1.3
docker tag docker-publish:latest docker-publish:v1.3.5
docker tag docker-publish:latest docker-publish:v1.3.5-RELEASE-g993df1b
docker tag docker-publish:latest docker-publish:latest
docker push docker-publish:v1
docker push docker-publish:v1.3
docker push docker-publish:v1.3.5
docker push docker-publish:v1.3.5-RELEASE-g993df1b
docker push docker-publish:latest

v1.3.5-RELEASE-g993df1b: v1.3.5 - your version number from project.json, g993df1b - git commit ID (7 chars)
STRICTSEMVER, strictSemver is true, then:
docker tag docker-publish:latest docker-publish:1.3.5
docker push docker-publish:1.3.5


If you want to publish a
snapshot, the image will be tagged with git commit id, and the commit's number since last version, and pushed. If DOCKERSTRICTSEMVER, strictSemver is true, then snapshot is not available.
docker tag docker-publish:latest docker-publish:v1.3.4-5-gb4c008b
docker push docker-publish:v1.3.4-1-gb4c008b

v1.3.5-RELEASE-g993df1b: v1.3.5 - your version number from project.json, 5 - commit's number since v1.3.4 tag, gb4c008b - last (fifth) git commit ID (7 chars
If you have never tagged git commit, then tag shows:
skipped: docker tag docker-publish:latest docker-publish:0bd4c74
skipped: docker push docker-publish:0bd4c74

0bd4c74 is the last commit id.