Sign inSign up

turfmedia/json-server

By turfmedia

•Updated over 10 years ago

mock json server

Image
0

276

turfmedia/json-server repository overview

⁠docker-json-server-faker

JSON Server⁠ provides REST API mocking based on plain JSON. This is a docker⁠ image with included faker⁠ and lodash⁠ npm packages that eases programmatically data creation with JS file.

Idea for Dockerfile came from clue⁠ and stephencoe⁠

Image size is 135.4 MB.

⁠Usage

This docker image is available as automated build at (https://index.docker.io/u/docker⁠ pull rivancic/docker-json-server-faker/), so there's no setup required. Using this image for the first time will start a download automatically. Further runs will be immediate, as the image will be cached locally.

The recommended way to run this container looks like this:

$ docker run -d -p 80:80 -v /home/user/articles.json:/data/db.json rivancic/docker-json-server-faker

The above example exposes the JSON Server REST API on port 80, so that you can now browse to:

http://localhost/

This is a rather common setup following docker's conventions:

  • -d will run a detached instance in the background
  • -p {OutsidePort}:80 will bind the webserver to the given outside port
  • -v {AbsolutePathToJsonFile}:/data/db.json should be passed to mount the given JSON file into the container
  • clue/json-server the name of this docker image
⁠Help

You can supply any number of JSON Server arguments that will be passed through unmodified.

$ docker run -it --rm rivancic/docker-json-server-faker --help
⁠JS seed file

If you mount a file to /data/file.js, it will automatically be used as a JS seed file.

JSON Server expects JS files to export a function that returns an object. Seed files are useful if you need to programmaticaly create a lot of data.

A sample file could look like this:

module.exports = function() {
  var data = {};

  data.posts = [];
  data.posts.push({ id: 1, body: 'foo' });
  //...

  return data;
}

And example of JS seed file that uses faker and lodash modules for generating massive amounts of fake contextual data.

module.exports = function() {
    var faker = require("faker");
    var _ = require("lodash");
    return {

        categories: _.times(6, function(n) {
            return {
                image: faker.random.image(),
                short_description: faker.lorem.sentence(),
                category_ID: faker.random.uuid()
            };

        }),

        sub_categories: _.times(100, function(n) {
            return {
                image: faker.random.image(),
                short_description: faker.lorem.sentence(),
                category_ID: faker.random.uuid()
            };

        }),

        search: _.times(100, function(n) {
                return {
                    image: faker.random.image(),
                    short_description: faker.lorem.sentence(),
                    gtin13: faker.random.uuid(),
                    price: faker.commerce.price()

                };

            })
            //, ...
    };
};
⁠JSON source

If you mount a file to /data/db.json (as in the above example), it will automatically be used as the plain JSON data source file.

A sample file could look like this:

{
  "posts": [
    { "id": 1, "body": "foo" },
    { "id": 2, "body": "bar" }
  ],
  "comments": [
    { "id": 1, "body": "baz", "postId": 1 },
    { "id": 2, "body": "qux", "postId": 2 }
  ]
}

Tag summary

Content type

Image

Digest

Size

47 MB

Last updated

over 10 years ago

docker pull turfmedia/json-server