Skip to content

Commit 166767d

Browse files
committed
Merge branch 'develop', prepare 1.0.0
2 parents 8aca4f0 + 045a800 commit 166767d

File tree

5 files changed

+84
-42
lines changed

5 files changed

+84
-42
lines changed

README.md

Lines changed: 24 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,40 @@
1-
# Exoframe (beta)
1+
# Exoframe
22

3-
> Power armor for docker containers
3+
> Simple Docker deployment tool
44
55
[![Build Status](https://travis-ci.org/exoframejs/exoframe.svg?branch=master)](https://travis-ci.org/exoframejs/exoframe)
66
[![Coverage Status](https://coveralls.io/repos/github/exoframejs/exoframe/badge.svg?branch=master)](https://coveralls.io/github/exoframejs/exoframe?branch=master)
77
[![npm](https://img.shields.io/npm/v/exoframe.svg?maxAge=2592000)](https://www.npmjs.com/package/exoframe)
88
[![license](https://img.shields.io/github/license/mashape/apistatus.svg?maxAge=2592000)](https://opensource.org/licenses/MIT)
99

10-
[![asciicast](https://asciinema.org/a/129255.png)](https://asciinema.org/a/129255)
10+
Exoframe is a self-hosted tool that allows simple one-command deployments using Docker.
1111

12-
## How it works
12+
## Features
1313

14-
Exoframe intends to do all the heavy lifting required to build and deploy web services for you.
15-
Exoframe uses [Docker](https://www.docker.com/) to deploy your project and [Traefik](https://traefik.io/) to proxy them to requested domain and/or paths.
16-
All the configuration of your projects happens automatically. So after running the command, the only thing you need to do is wait a few seconds until your files have been built or deployed!
14+
- One-command project deployment
15+
- SSH key based auth
16+
- Rolling updates
17+
- Deploy tokens (e.g. to deploy from CI)
18+
- Automated HTTPS setup via letsencrypt *
19+
- Automated gzip compression *
20+
- Simple access to the logs of deployments
21+
- Docker-compose support
22+
- Multiple deployment endpoints and multi-user support
23+
- Simple update procedure for client, server and Traefik
24+
- Optional automatic subdomain assignment (i.e. every deployment gets its own subdomain)
1725

18-
Currently, Exoframe understands and can deploy the following project types:
26+
\* Feature provided by [Traefik](https://traefik.io/)
1927

20-
1. Static html based projects - will be deployed using [nginx](http://hub.docker.com/_/nginx) image
21-
2. Node.js based projects - will be deployed using [Node:latest](https://hub.docker.com/_/node) image
22-
3. Docker based project - will be deployed using your [Dockerfile](https://docs.docker.com/engine/reference/builder/)
23-
4. Docker-Compose based project - will be deployed using your [docker-compose](https://docs.docker.com/compose/compose-file/) file
28+
## Demo
2429

25-
To run Exoframe you need two parts - Exoframe CLI on your local machine and [Exoframe server](https://github.com/exoframejs/exoframe-server) on your server with Docker.
30+
[![asciicast](https://asciinema.org/a/129255.png)](https://asciinema.org/a/129255)
2631

2732
## Installation and Usage
2833

29-
You can use one of the pre-packaged binaries from [releases](https://github.com/exoframejs/exoframe/releases).
30-
Or if you have Node installed, you can install Exoframe CLI using NPM (needs at least Node 8.0):
34+
To run Exoframe you will need two parts - Exoframe CLI and [Exoframe server](https://github.com/exoframejs/exoframe-server).
35+
For server install instructions see [Exoframe server repository](https://github.com/exoframejs/exoframe-server).
36+
37+
To install Exoframe CLI you can either download one of the pre-packaged binaries from [releases page](https://github.com/exoframejs/exoframe/releases) or install it using npm (needs at least Node 8.x):
3138

3239
```
3340
npm install exoframe -g
@@ -45,7 +52,7 @@ Then login using:
4552
exoframe login
4653
```
4754

48-
Then deploy your project by simply running:
55+
Then you will be able to deploy your projects by simply running:
4956

5057
```
5158
exoframe
@@ -55,16 +62,7 @@ You can find a list of all commands and options in the [docs](./docs/README.md).
5562

5663
## Docs
5764

58-
You can find project documentation [here](./docs/README.md).
59-
60-
## Contribute
61-
62-
1. Fork this repository to your own GitHub account and then clone it to your local device.
63-
2. Uninstall exoframe if it's already installed: `npm uninstall exoframe -g`
64-
3. Link it to the global module directory: `npm link`
65-
4. Transpile the source code and watch for changes: `npm start`
66-
67-
Now can use the `exoframe` command everywhere.
65+
You can find project documentation in the [docs folder](./docs/README.md).
6866

6967
## License
7068

docs/Basics.md

Lines changed: 29 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,48 @@
11
# Basics
22

3-
### Concepts
3+
## Concepts
44

55
- **Project** - one or more deployments grouped together (e.g. started via docker-compose)
66
- **Deployment** - one and only one deployed service
77

8-
### Commands
8+
## Requirements
9+
10+
Exoframe CLI is not particularly demanding and consumes at max ~50mb of RAM.
11+
Most intensive task from CLI side is packaging the project and streaming that to the server - it doesn't affect RAM usage that much and mostly relies on CPU and network.
12+
13+
Running Exoframe server on its own also doesn't require too much resources:
14+
- Exoframe Server consumes ~50mb of RAM
15+
- Traefik started along with server consumes ~60mb of RAM
16+
17+
Be aware though - execution of deployments will result in (1) new Docker images being built and (2) new Docker containers being started.
18+
Depending on your project's complexity, this might require significant amount of resources during both steps resulting in failed deployments (note: if Docker goes out-of-memory during build, you will not get any specific error - just a failed deployment).
19+
It is recommended to run Exoframe on a server with at least 1GB of RAM.
20+
21+
## Supported project types
22+
23+
Currently, Exoframe understands and can deploy the following project types:
24+
25+
1. Static html based projects - will be deployed using [nginx](http://hub.docker.com/_/nginx) image
26+
2. Node.js based projects - will be deployed using [node:latest](https://hub.docker.com/_/node) image *
27+
3. Docker based project - will be deployed using your [Dockerfile](https://docs.docker.com/engine/reference/builder/)
28+
4. Docker-Compose based projects - will be deployed using your [docker-compose](https://docs.docker.com/compose/compose-file/) file
29+
30+
\* There are two things to keep in mind for Node.js projects: (1) they are started via `npm start`, so make sure you have specified start script in your `package.json`; (2) by default port 80 is exposed, so you need to make your app listen on that port. If you'd like to execute your app in any different way or expose more ports - please use Dockerfile deployment method.
31+
32+
## Commands
933

1034
| Command | Description |
1135
| ---------------------- | ----------- |
1236
| deploy [path] | Deploy specified path |
1337
| config | Generate or update project config for current path |
1438
| list | List currently deployed projects |
15-
| rm [id] | Remove existing deployment or project |
16-
| log [id] | Get logs for existing deployment or project |
39+
| rm <id> | Remove existing deployment or project |
40+
| log <id> | Get logs for existing deployment or project |
1741
| token [ls|rm] | Generate, list or remove deployment tokens |
1842
| login | Login into Exoframe server |
1943
| endpoint [url] | Selects or adds the endpoint of Exoframe server |
2044
| rm-endpoint [url] | Removes an existing endpoint of Exoframe server |
21-
| update [target] | Gets current versions or updates given target |
45+
| update [target] | Gets current versions or updates given target (server | traefik | all) |
2246
| completion | Generates bash completion script |
2347

2448
## Project config file

docs/Contributing.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
## I want to contribute
2+
3+
Awesome! All contributions are welcome.
4+
If you want to add new feature or implement a significant change that hasn't been discussed yet - please _open an issue first_!
5+
6+
## How to send pull requests
7+
8+
1. Fork this repository to your own GitHub account
9+
2. Create new branch that is named accordingly to the issue you are working on (e.g. `feature/new-thing` or `fix/bug-name`)
10+
3. Make sure tests are passing (if you are adding new feature - add tests to cover basics of that feature)
11+
4. Make sure your branch is up to date with `develop` branch
12+
5. Open pull request towards `develop` branch
13+
6. Wait for feedback
14+
15+
## How to run Exoframe CLI locally
16+
17+
1. Fork this repository to your own GitHub account and then clone it to your local device.
18+
2. Uninstall exoframe if it's already installed: `npm uninstall exoframe -g`
19+
3. Link it to the global module directory: `npm link`
20+
21+
Now can use the `exoframe` command everywhere.

docs/FAQ.md

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,16 @@
11
# FAQ
22

3-
### Why do I need to enter username during login?
3+
## Is it ready for production?
4+
5+
Yes. We've been using it to deploy our project since May 2017 without any issues.
6+
7+
## Why do I need to enter username during login?
48

59
Username is just your ID that is used to distinguish your deployments from others.
610
Right now you have to enter it yourself. And you will only see deployments done with that username.
711
Currently, more than one user can use same username (so, all users with that username will see same deployments).
812

9-
### What kind of projects can I deploy with Exoframe?
10-
11-
Currently, Exoframe understands and can deploy the following project types:
12-
13-
1. static html based projects - will be deployed using [nginx](http://hub.docker.com/_/nginx) image
14-
2. node.js based projects - will be deployed using [node:alpine](https://hub.docker.com/_/node) image
15-
3. docker based project - will be deployed using your [Dockerfile](https://docs.docker.com/engine/reference/builder/)
16-
4. docker-compose based project - will be deployed using your [docker-compose](https://docs.docker.com/compose/compose-file/) file
13+
## How does it work?
1714

15+
Exoframe uses [Docker](https://www.docker.com/) to deploy your project and [Traefik](https://traefik.io/) to proxy requested domains and/or paths to deployed projects.
16+
All the Docker configuration of your projects happens automatically. So after running the command, the only thing you need to do is wait a few seconds until your project have been built and deployed!

docs/Links.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
# Articles, video and related links
22

3-
### Articles
3+
## Articles
44

55
- [Introducing Exoframe (beta) — self-hosted alternative to Now.sh](https://hackernoon.com/introducing-exoframe-beta-self-hosted-alternative-to-now-sh-80643f96b84b)
66
- [Continuous deployment for your Node.js projects in 10 minutes with Exoframe](https://hackernoon.com/continuous-deployment-for-your-node-js-projects-in-10-minutes-with-exoframe-bdf48340c1be)
77
- [Simplifying Docker management with Exoframe](https://hackernoon.com/simplifying-docker-management-with-exoframe-9275e92c7406)
88

9-
### Videos
9+
## Videos
1010

1111
- [Introducing Exoframe - self-hosted Now.sh alternative](https://www.youtube.com/watch?v=VZnYKIoh5oA)
1212
- [Continuous Deployment for Node.js projects in 10 mins using Exoframe](https://www.youtube.com/watch?v=AEwLt5hmKYo)

0 commit comments

Comments
 (0)