1
0
mirror of https://github.com/bingohuang/docker-labs.git synced 2025-07-15 02:37:27 +08:00

57 Commits

Author SHA1 Message Date
Jonathan Leibiusky (@xetorthio)
93226e30ff Fixes prometheus gauges
Fix session close. Now PWD gets disconnected from network before
deleting it.
2016-12-17 11:41:24 -08:00
Jonathan Leibiusky
70eaf37d4b Add metrics (#70)
* Add prometheus support to count sessions, instances and clientes over
time

* Track counters on server reload

* Change to gauges
2016-12-15 17:12:17 -08:00
Jonathan Leibiusky (@xetorthio)
69050373d7 Show docker swarm used ports 2016-12-13 08:02:48 -06:00
Marcos Lilljedahl
a7811b4e33 Omit race conditions and update swarm info events 2016-12-02 10:29:41 -03:00
Marcos Nils
84da622775 Remove pointer in struct method to avoid concurrent modifications to the (#64) 2016-12-02 02:19:49 +02:00
Jonathan Leibiusky @xetorthio
77905f3fd8 Query DinD instances for running containers and list the published ports
so the user can reverse proxy to the instance/port easily.
2016-12-01 17:28:55 -03:00
Jonathan Leibiusky
afa47c0bfc Periodic tasks refactor (#62)
* Once every second the session run a list of periodic tasks on every
instance concurrently. We use these tasks to do things like:
- Collect mem and cpu stats
- Check if instance is part of a swarm cluster
- Broadcast information to connected clients
2016-12-01 15:57:30 -03:00
Alex Ellis
5eda323477 Enable use of override for session timeout in hours, fix captcha bypass bug. (#51)
* - Enable use of override for session timeout. This is more useful than having to hard-code and rebuild the code for the previous 4 hour limit. Just set environmental variable and start the app.
- Future work may involve breaking down into minutes, but this is a good minimum delivery to provide value to end-user/developer.

- Fixes bug in Captcha code by introducing new landing page. This is not a new go template, it's a separate HTML file because SRP - single reponsibility principle. Happy for this to be refacted after merging commit.

- Fix for including Docker 1.12 override has been removed for later PR.

* Merge

* Reinstate 'material' JS include'

* https for JS includes

* HTTPs for JS in bypass
2016-11-30 20:17:18 +02:00
Marcos Lilljedahl
cbdc22d8a0 Remove unnecessary log line and change default dind image 2016-11-29 11:06:43 -03:00
Marcos Lilljedahl
10bdf3d5f2 Return swarm info to be displayed in the FE
This requires that PWD is working as a container in the same
network as all dinds

Add icons to swarmInfo
2016-11-29 10:52:55 -03:00
Jonathan Leibiusky @xetorthio
6af6f42721 Make regex more restrictive to allow the proxy to be more deterministic.
Make it to not depend on a specific TLD.
2016-11-23 11:52:59 -03:00
Jonathan Leibiusky @xetorthio
ec9d34ffda Add reverse proxy endpoint.
It works by using the Host of the request. When it receives something in
the form of: `<node>.<session>.play-with-docker.com` it does a reverse
proxy http request to `node`, validating that the `node` actually belongs
to the `session`.
If the node has a prefix `ip` and continues with a valid IP address
where the dots where replaces by underscores (like `ip10_0_0_1`) then it
will remove the `ip` prefix and and replace the underscores by dots, and
assume it is an ip address.
2016-11-23 11:52:59 -03:00
Antonis Kalipetis
dd8f63363e
Fix issue where instance name rotation was faulty
Previously, if node2 was deleted in a node1, node2, node3 set, the next node creation would fail since it would always try to assign node3 as a name.
Now, the first available name is always assigned.

Signed-off-by: Antonis Kalipetis <akalipetis@gmail.com>
2016-11-22 10:42:19 +02:00
Marcos Lilljedahl
861355d4e3 Fix undetected bugs in instance renaming 2016-11-22 00:07:41 -03:00
Marcos Lilljedahl
8f5f9f2c90 Add container names to make attachable names work 2016-11-21 22:01:00 -03:00
Marcos Lilljedahl
a7d76f2720 Enumerate nodes to improve cluster configuration 2016-11-21 21:49:23 -03:00
Jonathan Leibiusky @xetorthio
8b0749a9ba Show cpu and memory stats of every node 2016-11-18 13:52:47 -03:00
Marcos Lilljedahl
a10f247812 Allow to disable recaptcha explicitly by env variable
The reason for this is because sometimes in dev enviroments recaptcha
will might return a wrong answer, so it's nice to have a way to
explicitly disable it
2016-11-16 01:23:50 -03:00
Jonathan Leibiusky @xetorthio
af9986c0f8 Validates that user is a human.
Add google recaptcha as an initial page before creating any session.
To configure recaptcha there are 2 environment variables that are needed
`GOOGLE_RECAPTCHA_SITE_KEY` and `GOOGLE_RECAPTCHA_SITE_SECRET`.
The code contains development defaults that should be set in production
to real values.
**NOTICE: Development defaults assume that the domain is `localhost`**
2016-11-15 16:53:44 -03:00
Jonathan Leibiusky @xetorthio
802375bbf7 After loading saved sessions schedule them to expire 2016-11-15 14:49:50 -03:00
Jonathan Leibiusky @xetorthio
db074a5804 Add expiration clock to sessions 2016-11-15 13:20:59 -03:00
Marcos Lilljedahl
939c045198 Change default dind image and prevent session panic 2016-11-15 01:46:29 -03:00
Marcos Lilljedahl
e8d69d6a21 Fix session config for docker image 2016-11-14 22:08:53 -03:00
Marcos Lilljedahl
23bb4eaf69 Add session persistence and use attach instead of exec 2016-11-14 21:29:32 -03:00
Marcos Lilljedahl
6148dd8d86 Ctrl-m is enter :S 2016-11-14 18:23:24 -03:00
Marcos Lilljedahl
227af2338d Change default dind detach keys to standard PQ can be used in PWD 2016-11-14 17:49:34 -03:00
Marcos Lilljedahl
46f95ce6a5 Increase limits and change ngrok instance 2016-11-14 16:38:57 -03:00
Marcos Lilljedahl
3e142c91e8 Revert transport preference 2016-11-14 11:56:26 -03:00
Marcos Lilljedahl
46a186f28b Add hostname to instance name 2016-11-14 01:29:36 -03:00
Marcos Lilljedahl
bea093e67a Use 1.12.3 dind image 2016-11-14 00:55:02 -03:00
Marcos Nils
cdf1027e94 Memory limit (#26)
* Hardcode memory to 512mb

Fixes #21

* Add constants to define memory and disable OOM
2016-11-13 17:09:44 +02:00
Marcos Lilljedahl
54378862b3 Use docker 1.13 to allow overlay networks
- Print error if resizing fails
2016-11-13 01:11:45 -03:00
Jonathan Leibiusky (@xetorthio)
e8b38fe717 Add session close button 2016-11-12 18:58:30 -03:00
Jonathan Leibiusky (@xetorthio)
1be40005e8 Increase session time 2016-11-11 20:18:47 -03:00
Jonathan Leibiusky (@xetorthio)
d05fe56fea Better session lock management 2016-11-11 20:10:19 -03:00
Jonathan Leibiusky (@xetorthio)
e49245dfe9 Increase session TTL to 4 hours 2016-11-11 09:17:01 -03:00
Jonathan Leibiusky (@xetorthio)
6d967441ac If instance doesn't exist don't try to connect to its terminal 2016-11-11 09:16:01 -03:00
Jonathan Leibiusky (@xetorthio)
b5e016e6f5 When there are no more clients, don't try to measure best viewport size 2016-11-10 16:23:54 -03:00
Jonathan Leibiusky (@xetorthio)
8e4981d24f Huge refactor to have everything working with socket.io
It fixes lots of bugs, can fallback to long polling, resize viewport of
terminals and share clients state of the session, so they all see the
same thing.
2016-11-10 10:42:08 -03:00
Marcos Lilljedahl
a56af3dc22 Refactor sessions and add locking to avoid concurrent requests to create
more instances
2016-10-14 12:54:25 -03:00
Marcos Lilljedahl
3dd5a8b5ef Set default resize options 2016-10-11 17:05:06 -03:00
Marcos Lilljedahl
50a08f265c Revert "Don't allocate a pseudo tty for shell attaches"
This reverts commit d87e288f6ffa15cf72d8b90567a5cf02e902bf7f.
2016-10-11 13:33:22 -03:00
Jonathan Leibiusky (@xetorthio)
d87e288f6f Don't allocate a pseudo tty for shell attaches 2016-10-11 13:25:33 -03:00
Jonathan Leibiusky (@xetorthio)
59844cb80c Create a pseudo tty to docker daemons 2016-10-11 13:03:30 -03:00
Marcos Nils
429a5f9014 Merge pull request #4 from alexellis/ulimit_experimental
Experimental ulimit implementation and README.md
2016-10-11 01:25:06 +02:00
Marcos Lilljedahl
672b85cfe3 Remove volumes when deleting instances
Fixes #1
2016-10-09 21:16:58 +02:00
Alex
7df6bacee5 Allow dind image to be overriden.
- improve readme - mention pre-pulling dind image.
- read env variable once in init() method
2016-10-09 19:49:34 +01:00
Alex
11749c4902 Provide DIND override through DIND_IMAGE env variable. Use pinned version of DIND by default instead of latest to prevent surprises. 2016-10-09 19:37:53 +02:00
Alex
74e8502f3f - Fix .gitignore
- Note about bug with Docker driver
- Implement experimental pid ulimit of 150.
2016-10-09 18:58:32 +02:00
Marcos Lilljedahl
97f39ca375 Remove writer if websocket disconnects 2016-10-08 15:04:30 +02:00