diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..fe74f2e --- /dev/null +++ b/.dockerignore @@ -0,0 +1,11 @@ +.env +.git +.gitignore +.travis.yml +data +deploy +node_modules +private.key +scripts +tokens +unpkg.sketch diff --git a/.gitignore b/.gitignore index f6bcd12..0dd9725 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ .DS_Store .env +/data /node_modules /public/_assets /server/stats.json @@ -8,7 +9,5 @@ npm-debug.log* yarn-debug.log* yarn-error.log* -dump.rdb - private.key /tokens diff --git a/Dockerfile.server b/Dockerfile.server new file mode 100644 index 0000000..1745769 --- /dev/null +++ b/Dockerfile.server @@ -0,0 +1,10 @@ +FROM node:8 + +COPY package.json yarn.lock ./ +RUN yarn --pure-lockfile +COPY . . + +ENV PORT 5000 +CMD ["node", "server.js"] + +EXPOSE 5000 diff --git a/Dockerfile.worker b/Dockerfile.worker new file mode 100644 index 0000000..1cee604 --- /dev/null +++ b/Dockerfile.worker @@ -0,0 +1,7 @@ +FROM node:8 + +COPY package.json yarn.lock ./ +RUN yarn --pure-lockfile +COPY . . + +CMD ["node", "server/ingestLogs.js"] diff --git a/Procfile.dev b/Procfile.dev deleted file mode 100644 index ac6e727..0000000 --- a/Procfile.dev +++ /dev/null @@ -1,2 +0,0 @@ -web: NODE_ENV=development node server.js -redis: redis-server --port 6379 diff --git a/README.md b/README.md index 99c2c41..164570d 100644 --- a/README.md +++ b/README.md @@ -3,56 +3,15 @@ [build-badge]: https://img.shields.io/travis/unpkg/unpkg/master.svg?style=flat-square [build]: https://travis-ci.org/unpkg/unpkg -[unpkg](https://unpkg.com) is a fast, global [content delivery network](https://en.wikipedia.org/wiki/Content_delivery_network) for everything on [npm](https://www.npmjs.com/). Use it to quickly and easily load any file from any package using a URL like: +[unpkg](https://unpkg.com) is a fast, global [content delivery network](https://en.wikipedia.org/wiki/Content_delivery_network) for everything on [npm](https://www.npmjs.com/). -
- unpkg.com/:package@:version/:file -
+### Documentation -### Examples +Please visit [the unpkg website](https://unpkg.com) to learn more about how to use it. -Using a fixed version: +### Development -* [unpkg.com/react@16.0.0/umd/react.production.min.js](//unpkg.com/react@16.0.0/umd/react.production.min.js) -* [unpkg.com/react-dom@16.0.0/umd/react-dom.production.min.js](//unpkg.com/react-dom@16.0.0/umd/react-dom.production.min.js) - -You may also use a [semver range](https://docs.npmjs.com/misc/semver) or a [tag](https://docs.npmjs.com/cli/dist-tag) instead of a fixed version number, or omit the version/tag entirely to use the `latest` tag. - -* [unpkg.com/react@^16/umd/react.production.min.js](//unpkg.com/react@^16/umd/react.production.min.js) -* [unpkg.com/react/umd/react.production.min.js](//unpkg.com/react/umd/react.production.min.js) - -If you omit the file path (i.e. use a "bare" URL), unpkg will serve the file specified by the `unpkg` field in `package.json`, or fall back to `main`. - -* [unpkg.com/d3](//unpkg.com/d3) -* [unpkg.com/jquery](//unpkg.com/jquery) -* [unpkg.com/three](//unpkg.com/three) - -Append a `/` at the end of a URL to view a listing of all the files in a package. - -* [unpkg.com/react/](//unpkg.com/react/) -* [unpkg.com/lodash/](//unpkg.com/lodash/) - -### Query Parameters - -
-
?meta
-
Return metadata about any file in a package as JSON (e.g. `/any/file?meta`)
- -
?module
-
Expands all ["bare" `import` specifiers](https://html.spec.whatwg.org/multipage/webappapis.html#resolve-a-module-specifier) in JavaScript modules to unpkg URLs. This feature is *very experimental*
-
- -### Cache Behavior - -The CDN caches files based on their permanent URL, which includes the npm package version. This works because npm does not allow package authors to overwrite a package that has already been published with a different one at the same version number. - -URLs that do not specify a package version number redirect to one that does. This is the `latest` version when no version is specified, or the `maxSatisfying` version when a [semver version](https://github.com/npm/node-semver) is given. Redirects are cached for 5 minutes. - -Browsers are instructed (via the `Cache-Control` header) to cache assets for 4 hours. - -### Feedback - -If you think this is useful, we'd love to hear from you. Please reach out to [@unpkg](https://twitter.com/unpkg) with any questions or concerns. +To boot the development server, first you'll need to [install Docker](https://docs.docker.com/install/). Then, you can get everything running with `docker-compose up`. ### Sponsors diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..b6eab07 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,42 @@ +version: "3" + +networks: + localnet: {} + +volumes: + pkgvol: {} + +services: + + cache: + image: redis + ports: + - "6379:6379" + volumes: + - ./data:/data + networks: + - localnet + + server: + build: + context: . + dockerfile: Dockerfile.server + ports: + - "8080:5000" + volumes: + - pkgvol:/packages + networks: + - localnet + env_file: .env + depends_on: + - cache + + worker: + build: + context: . + dockerfile: Dockerfile.worker + networks: + - localnet + env_file: .env + depends_on: + - cache diff --git a/package.json b/package.json index aab8faa..0a7788b 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "private": true, "scripts": { - "start": "heroku local -f Procfile.dev", + "start": "echo 'Use `docker-compose up` to start the server", "build": "NODE_ENV=production webpack -p --json > server/stats.json", "lint": "eslint client && eslint server", "test": "jest" @@ -68,9 +68,6 @@ "node": "8" }, "jest": { - "testPathIgnorePatterns": [ - "/node_modules/", - "__tests__/utils" - ] + "testPathIgnorePatterns": ["/node_modules/", "__tests__/utils"] } }