I'm currently responsible for technology at Peaks.
khezen / docker-mongo Goto Github PK
View Code? Open in Web Editor NEWMongoDB Docker image embedding RocksDB storage engine
MongoDB Docker image embedding RocksDB storage engine
I'm currently responsible for technology at Peaks.
this is the content of my docker-compose.yml
`
version: '3'
services:
mongodb:
image: khezen/mongo3.4
ports:
- "27018:27017"
volumes:
- ./mongo-datadir:/data/db
`
when I docker-compose up on both of my local machines which are ubuntu 14.04 and ubuntu 16.4 it works fine, however, when I tried to get it to work on my Linode server it ran into an infinite loop in the
and gives the following output
I have tried every thing I can, I have no idea what is happening, why it gives illegal instruction $cmd.
I will be very glad if someone can help, thanks in advance
I have a mongo cluster of 3 nodes, node1, node2, and node3.
I want to start all 3 in a compose file, and make node1 has priority 3, node2 has priority 2, and node3 has priority 1. How can I do this in compose file?
Using the example https://github.com/khezen/docker-mongo/blob/master/examples/swarm/replica-set_cluster.yml, but I keep running into this
PS: I'm using docker in swarm mode
docker-compose up
ERROR: The Compose file './docker-compose.yml' is invalid because:
services.replica1.deploy value Additional properties are not allowed ('palcement' was unexpected)
services.replica2.deploy value Additional properties are not allowed ('palcement' was unexpected)
services.replica3.deploy value Additional properties are not allowed ('palcement' was unexpected)
#docker-compose --version
docker-compose version 1.17.0, build ac53b73
#docker --version
Docker version 17.10.0-ce, build f4ffd25
I guess this is more an issue of the gitlab-ci but maybe you have an idea. When I use this image (mongo:3.4) as a service for gitlab-ci I get an exit code 1 in the beginning. I do not receive this error when I use e.g. docker-compose.
The relevant part of gitlab-ci.yml:
testing:
image: maven:3.5-jdk-8-alpine
services:
- khezen/mongo:3.4
stage: test
script:
- mvn -B clean test
variables:
#Spring conf
SPRING_DATA_MONGODB_HOST: mongo
SPRING_DATA_MONGODB_DATABASE: test
SPRING_DATA_MONGODB_USERNAME: test
SPRING_DATA_MONGODB_PASSWORD: test
#MongoDB conf
AUTH: y
ADMIN_USER: admin
ADMIN_PWD: admin123
DB_NAME: test
DB_USER: test
DB_PWD: test
The CI outputs the following:
Using Docker executor with image maven:3.5-jdk-8-alpine ...
Starting service khezen/mongo:3.4 ...
Pulling docker image khezen/mongo:3.4 ...
Using docker image khezen/mongo:3.4 ID=sha256:9fc1791c23fa29379d8d3264a5894e8b0718488cd6e8a1ffc24b0d54bc7eec4f for khezen/mongo service...
Waiting for services to be up and running...
*** WARNING: Service runner-c51c0d3a-project-46-concurrent-0-khezen__mongo probably didn't start properly.
exit code 1
2017-06-27T11:54:21.508847753Z /run/mongod/entrypoint.sh
2017-06-27T11:54:21.512500277Z => Waiting for confirmation of MongoDB service startup
2017-06-27T11:54:21.514474955Z mongod --storageEngine wiredTiger --port 27017 --dbpath /data/db --oplogSize 50 --keyFile /.key
2017-06-27T11:54:21.524594717Z 2017-06-27T11:54:21.524+0000 I STORAGE [main] Compression: snappy
2017-06-27T11:54:21.524609886Z 2017-06-27T11:54:21.524+0000 I STORAGE [main] MaxWriteMBPerSec: 1024
2017-06-27T11:54:21.524612425Z 2017-06-27T11:54:21.524+0000 I STORAGE [main] Crash safe counters: 0
2017-06-27T11:54:21.524614460Z 2017-06-27T11:54:21.524+0000 I STORAGE [main] Counters: 1
2017-06-27T11:54:21.524616590Z 2017-06-27T11:54:21.524+0000 I STORAGE [main] Use SingleDelete in index: 0
2017-06-27T11:54:21.535995947Z 2017-06-27T11:54:21.535+0000 I CONTROL [initandlisten] MongoDB starting : pid=17 port=27017 dbpath=/data/db 64-bit host=2afad65aa5a2
2017-06-27T11:54:21.536005801Z 2017-06-27T11:54:21.535+0000 I CONTROL [initandlisten] db version v3.4.5
2017-06-27T11:54:21.536008138Z 2017-06-27T11:54:21.535+0000 I CONTROL [initandlisten] git version: 520b8f3092c48d934f0cd78ab5f40fe594f96863
2017-06-27T11:54:21.536010077Z 2017-06-27T11:54:21.535+0000 I CONTROL [initandlisten] allocator: tcmalloc
2017-06-27T11:54:21.536011995Z 2017-06-27T11:54:21.535+0000 I CONTROL [initandlisten] modules: rocks
2017-06-27T11:54:21.536013855Z 2017-06-27T11:54:21.535+0000 I CONTROL [initandlisten] build environment:
2017-06-27T11:54:21.536015633Z 2017-06-27T11:54:21.535+0000 I CONTROL [initandlisten] distarch: x86_64
2017-06-27T11:54:21.536017414Z 2017-06-27T11:54:21.535+0000 I CONTROL [initandlisten] target_arch: x86_64
2017-06-27T11:54:21.536019252Z 2017-06-27T11:54:21.535+0000 I CONTROL [initandlisten] options: { net: { port: 27017 }, replication: { oplogSizeMB: 50 }, security: { keyFile: "/.key" }, storage: { dbPath: "/data/db", engine: "wiredTiger" } }
2017-06-27T11:54:21.539101967Z 2017-06-27T11:54:21.539+0000 I STORAGE [initandlisten] wiredtiger_open config: create,cache_size=15558M,session_max=20000,eviction=(threads_min=4,threads_max=4),config_base=false,statistics=(fast),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000),checkpoint=(wait=60,log_size=2GB),statistics_log=(wait=0),
2017-06-27T11:54:22.496115290Z 2017-06-27T11:54:22.495+0000 I CONTROL [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
2017-06-27T11:54:22.496130988Z 2017-06-27T11:54:22.496+0000 I CONTROL [initandlisten]
2017-06-27T11:54:22.849531147Z 2017-06-27T11:54:22.848+0000 I FTDC [initandlisten] Initializing full-time diagnostic data capture with directory '/data/db/diagnostic.data'
2017-06-27T11:54:23.307334857Z 2017-06-27T11:54:23.307+0000 I INDEX [initandlisten] build index on: admin.system.version properties: { v: 2, key: { version: 1 }, name: "incompatible_with_version_32", ns: "admin.system.version" }
2017-06-27T11:54:23.307352854Z 2017-06-27T11:54:23.307+0000 I INDEX [initandlisten] building index using bulk method; build may temporarily use up to 500 megabytes of RAM
2017-06-27T11:54:23.308029906Z 2017-06-27T11:54:23.307+0000 I INDEX [initandlisten] build index done. scanned 0 total records. 0 secs
2017-06-27T11:54:23.308303401Z 2017-06-27T11:54:23.308+0000 I COMMAND [initandlisten] setting featureCompatibilityVersion to 3.4
2017-06-27T11:54:23.308460157Z 2017-06-27T11:54:23.308+0000 I NETWORK [thread1] waiting for connections on port 27017
*********
Using docker image sha256:031944d3681c0f175dc8c1a4bdfd4e8d4aeef2e338df551190f4c75886082c62 for predefined container...
Pulling docker image maven:3.5-jdk-8-alpine ...
Using docker image maven:3.5-jdk-8-alpine ID=sha256:e091c75b16e4bd122718e55ac5b2e7b0d7f292b8757a803d80b12279088cd914 for build container...
Normally I receive more output afterward where the user is being added to the MongoDB. I have no idea why it stops at this point. The CI is continuing with its test but then failing when it comes to the integration tests where the MongoDB is trying to be accessed. It just receives a timeout.
The official mongo image works for some reason, however, it does not support authentication as your image does (which is very nice btw!)
Thanks for your help!
Hi!
First, thanks for the image. It seems to be pretty good.
However there is some error with creating the user database.
When specify DB_NAME variable, scripts try to use it for authentication the admin.
i.e.
mongo -u admin -p adminpass --authenticationDatabase someuserdb --eval db.createUser({user: 'someuser', pwd: 'somepass', roles:[{role: 'dbOwner', db: 'someuserdb'}]});
I suppose the solution could be to specify the default authenticationDatabase for admin to admin
. Or to have some variable like ADMIN_AUTHENTICATION_DATABASE.
Create docker-compose.yml:
version: '2'
services:
mongod1:
image: khezen/mongo:3.4
environment:
AUTH: y
ADMIN_USER: admin
ADMIN_PWD: adminpass
DB_NAME: someuserdb
DB_USER: someuser
DB_PWD: somepass
volumes:
- dbdata:/data/db
ports:
- "27017:27017"
network_mode: bridge
restart: always
volumes:
dbdata:
Start docker-compose:
$ docker-compose up
:
Creating volume "dockercomposemongodb_dbdata" with default driver
Creating dockercomposemongodb_mongod1_1
Attaching to dockercomposemongodb_mongod1_1
mongod1_1 | /run/mongod/entrypoint.sh
mongod1_1 | => Waiting for confirmation of MongoDB service startup
mongod1_1 | mongod --storageEngine wiredTiger --port 27017 --dbpath /data/db --oplogSize 50 --keyFile /config/key
mongod1_1 | 2017-02-17T17:19:48.359+0000 I STORAGE [main] Compression: snappy
mongod1_1 | 2017-02-17T17:19:48.359+0000 I STORAGE [main] MaxWriteMBPerSec: 1024
mongod1_1 | 2017-02-17T17:19:48.359+0000 I STORAGE [main] Crash safe counters: 0
mongod1_1 | 2017-02-17T17:19:48.359+0000 I STORAGE [main] Counters: 1
mongod1_1 | 2017-02-17T17:19:48.359+0000 I STORAGE [main] Use SingleDelete in index: 0
mongod1_1 | 2017-02-17T17:19:48.372+0000 I CONTROL [initandlisten] MongoDB starting : pid=17 port=27017 dbpath=/data/db 64-bit host=3f3a86cd5d2f
mongod1_1 | 2017-02-17T17:19:48.372+0000 I CONTROL [initandlisten] db version v3.4.2
mongod1_1 | 2017-02-17T17:19:48.372+0000 I CONTROL [initandlisten] git version: 3f76e40c105fc223b3e5aac3e20dcd026b83b38b
mongod1_1 | 2017-02-17T17:19:48.372+0000 I CONTROL [initandlisten] allocator: tcmalloc
mongod1_1 | 2017-02-17T17:19:48.372+0000 I CONTROL [initandlisten] modules: rocks
mongod1_1 | 2017-02-17T17:19:48.372+0000 I CONTROL [initandlisten] build environment:
mongod1_1 | 2017-02-17T17:19:48.372+0000 I CONTROL [initandlisten] distarch: x86_64
mongod1_1 | 2017-02-17T17:19:48.372+0000 I CONTROL [initandlisten] target_arch: x86_64
mongod1_1 | 2017-02-17T17:19:48.372+0000 I CONTROL [initandlisten] options: { net: { port: 27017 }, replication: { oplogSizeMB: 50 }, security: { keyFile: "/config/key" }, storage: { dbPath: "/data/db", engine: "wiredTiger" } }
mongod1_1 | 2017-02-17T17:19:48.376+0000 I STORAGE [initandlisten]
mongod1_1 | 2017-02-17T17:19:48.376+0000 I STORAGE [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine
mongod1_1 | 2017-02-17T17:19:48.376+0000 I STORAGE [initandlisten] ** See http://dochub.mongodb.org/core/prodnotes-filesystem
mongod1_1 | 2017-02-17T17:19:48.376+0000 I STORAGE [initandlisten] wiredtiger_open config: create,cache_size=487M,session_max=20000,eviction=(threads_max=4),config_base=false,statistics=(fast),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000),checkpoint=(wait=60,log_size=2GB),statistics_log=(wait=0),
mongod1_1 | 2017-02-17T17:19:48.874+0000 I CONTROL [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
mongod1_1 | 2017-02-17T17:19:48.874+0000 I CONTROL [initandlisten]
mongod1_1 | 2017-02-17T17:19:49.013+0000 I FTDC [initandlisten] Initializing full-time diagnostic data capture with directory '/data/db/diagnostic.data'
mongod1_1 | 2017-02-17T17:19:49.261+0000 I INDEX [initandlisten] build index on: admin.system.version properties: { v: 2, key: { version: 1 }, name: "incompatible_with_version_32", ns: "admin.system.version" }
mongod1_1 | 2017-02-17T17:19:49.261+0000 I INDEX [initandlisten] building index using bulk method; build may temporarily use up to 500 megabytes of RAM
mongod1_1 | 2017-02-17T17:19:49.268+0000 I INDEX [initandlisten] build index done. scanned 0 total records. 0 secs
mongod1_1 | 2017-02-17T17:19:49.269+0000 I COMMAND [initandlisten] setting featureCompatibilityVersion to 3.4
mongod1_1 | 2017-02-17T17:19:49.270+0000 I NETWORK [thread1] waiting for connections on port 27017
mongod1_1 | 2017-02-17T17:19:53.381+0000 I NETWORK [thread1] connection accepted from 127.0.0.1:40548 #1 (1 connection now open)
mongod1_1 | 2017-02-17T17:19:53.381+0000 I ACCESS [conn1] note: no users configured in admin.system.users, allowing localhost access
mongod1_1 | 2017-02-17T17:19:53.382+0000 I NETWORK [conn1] received client metadata from 127.0.0.1:40548 conn1: { application: { name: "MongoDB Shell" }, driver: { name: "MongoDB Internal Client", version: "3.4.2" }, os: { type: "Linux", name: "PRETTY_NAME="Debian GNU/Linux stretch/sid"", architecture: "x86_64", version: "Kernel 4.9.8-moby" } }
mongod1_1 | 2017-02-17T17:19:53.387+0000 I - [conn1] end connection 127.0.0.1:40548 (1 connection now open)
mongod1_1 | mongo admin --eval db.createUser({user: 'admin', pwd: 'adminpass', roles:[{role: 'root', db: 'admin'}]});
mongod1_1 | MongoDB shell version v3.4.2
mongod1_1 | connecting to: mongodb://127.0.0.1:27017/admin
mongod1_1 | 2017-02-17T17:19:53.428+0000 I NETWORK [thread1] connection accepted from 127.0.0.1:40550 #2 (1 connection now open)
mongod1_1 | 2017-02-17T17:19:53.429+0000 I NETWORK [conn2] received client metadata from 127.0.0.1:40550 conn2: { application: { name: "MongoDB Shell" }, driver: { name: "MongoDB Internal Client", version: "3.4.2" }, os: { type: "Linux", name: "PRETTY_NAME="Debian GNU/Linux stretch/sid"", architecture: "x86_64", version: "Kernel 4.9.8-moby" } }
mongod1_1 | MongoDB server version: 3.4.2
mongod1_1 | 2017-02-17T17:19:53.604+0000 I COMMAND [conn2] command admin.system.users appName: "MongoDB Shell" command: insert { insert: "system.users", documents: [ { _id: "admin.admin", user: "admin", db: "admin", credentials: { SCRAM-SHA-1: { iterationCount: 10000, salt: "bkOzqKC+nvVQdMdFL5kNmQ==", storedKey: "Ul12cN9iDIc8AdIhM4QWH0IwBrc=", serverKey: "dC5xzvDQN7Tq8409y9cH8CV2XZo=" } }, roles: [ { role: "root", db: "admin" } ] } ] } ninserted:1 keysInserted:1 numYields:0 reslen:44 locks:{ Global: { acquireCount: { r: 10, w: 4 } }, Database: { acquireCount: { r: 3, W: 4 } }, Collection: { acquireCount: { r: 3, w: 3 } } } protocol:op_query 160ms
mongod1_1 | 2017-02-17T17:19:53.604+0000 I COMMAND [conn2] command admin.system.version appName: "MongoDB Shell" command: createUser { createUser: "admin", pwd: "xxx", roles: [ { role: "root", db: "admin" } ], digestPassword: false, writeConcern: { w: "majority", wtimeout: 300000.0 } } numYields:0 reslen:22 locks:{ Global: { acquireCount: { r: 10, w: 4 } }, Database: { acquireCount: { r: 3, W: 4 } }, Collection: { acquireCount: { r: 3, w: 3 } } } protocol:op_command 173ms
mongod1_1 | Successfully added user: {
mongod1_1 | "user" : "admin",
mongod1_1 | "roles" : [
mongod1_1 | {
mongod1_1 | "role" : "root",
mongod1_1 | "db" : "admin"
mongod1_1 | }
mongod1_1 | ]
mongod1_1 | }
mongod1_1 | 2017-02-17T17:19:53.610+0000 I - [conn2] end connection 127.0.0.1:40550 (1 connection now open)
mongod1_1 | mongo -u admin -p adminpass --authenticationDatabase someuserdb --eval db
mongod1_1 | MongoDB shell version v3.4.2
mongod1_1 | connecting to: mongodb://127.0.0.1:27017
mongod1_1 | 2017-02-17T17:19:53.652+0000 I NETWORK [thread1] connection accepted from 127.0.0.1:40552 #3 (1 connection now open)
mongod1_1 | 2017-02-17T17:19:53.653+0000 I NETWORK [conn3] received client metadata from 127.0.0.1:40552 conn3: { application: { name: "MongoDB Shell" }, driver: { name: "MongoDB Internal Client", version: "3.4.2" }, os: { type: "Linux", name: "PRETTY_NAME="Debian GNU/Linux stretch/sid"", architecture: "x86_64", version: "Kernel 4.9.8-moby" } }
mongod1_1 | MongoDB server version: 3.4.2
mongod1_1 | 2017-02-17T17:19:53.655+0000 I ACCESS [conn3] SCRAM-SHA-1 authentication failed for admin on someuserdb from client 127.0.0.1:40552 ; UserNotFound: Could not find user admin@someuserdb
mongod1_1 | 2017-02-17T17:19:53.656+0000 E QUERY [thread1] Error: Authentication failed. :
mongod1_1 | DB.prototype._authOrThrow@src/mongo/shell/db.js:1459:20
mongod1_1 | @(auth):6:1
mongod1_1 | @(auth):1:2
mongod1_1 | 2017-02-17T17:19:53.660+0000 I - [conn3] end connection 127.0.0.1:40552 (1 connection now open)
mongod1_1 | exception: login failed
mongod1_1 | mongo -u admin -p adminpass --authenticationDatabase someuserdb --eval db.createUser({user: 'someuser', pwd: 'somepass', roles:[{role: 'dbOwner', db: 'someuserdb'}]});
mongod1_1 | MongoDB shell version v3.4.2
mongod1_1 | connecting to: mongodb://127.0.0.1:27017
mongod1_1 | 2017-02-17T17:19:53.700+0000 I NETWORK [thread1] connection accepted from 127.0.0.1:40554 #4 (1 connection now open)
mongod1_1 | 2017-02-17T17:19:53.701+0000 I NETWORK [conn4] received client metadata from 127.0.0.1:40554 conn4: { application: { name: "MongoDB Shell" }, driver: { name: "MongoDB Internal Client", version: "3.4.2" }, os: { type: "Linux", name: "PRETTY_NAME="Debian GNU/Linux stretch/sid"", architecture: "x86_64", version: "Kernel 4.9.8-moby" } }
mongod1_1 | MongoDB server version: 3.4.2
mongod1_1 | 2017-02-17T17:19:53.703+0000 I ACCESS [conn4] SCRAM-SHA-1 authentication failed for admin on someuserdb from client 127.0.0.1:40554 ; UserNotFound: Could not find user admin@someuserdb
mongod1_1 | 2017-02-17T17:19:53.704+0000 E QUERY [thread1] Error: Authentication failed. :
mongod1_1 | DB.prototype._authOrThrow@src/mongo/shell/db.js:1459:20
mongod1_1 | @(auth):6:1
mongod1_1 | @(auth):1:2
mongod1_1 | 2017-02-17T17:19:53.705+0000 I - [conn4] end connection 127.0.0.1:40554 (1 connection now open)
mongod1_1 | exception: login failed
mongod1_1 | /run/mongod/start.sh
Hi, I'm loving this image so far; I think it's really well built and easy to set up :)
However, I did run into a problem when trying to use this image on our linux server instead of my local mac machine. Whenever I try to run any version of the image, it either fails with a 13 Illegal Instruction (core dumped) $cmd
error, hangs on "=> Waiting for confirmation of MongoDB service startup", or does both. I know the error has something to do with mongod because when I try to run mongod from within a container (bypassing the entrypoint), I get the same error.
I'm going to continue investigating this problem and hopefully solve it within a couple of days, in which case I'll issue a PR if appropriate. In the meantime, any thoughts you have would be very welcome :)
Kernel: 3.16.0-4-amd64
Linux Version:
Also, I have had no problems running a previous (non-sharded) instance of mongo on this server within a docker container.
ERROR: Version in "./docker-compose.yml" is unsupported. You might be seeing this error because you're using the wrong Compose file version. Either specify a version of "2" (or "2.0") and place your service definitions under the
services
key or omit theversion
key and place your service definitions at the root of the file to use version 1.
Docker version 17.06.0-ce, build 02c1d87
docker-compose version 1.8.0, build unknown
Even if I erase everything in the file and just let the first line "version" in there it still gives the same error.
hi . any update for version 4 ?
First of all, Thank you for making docker image to easily install.
I am trying to install mongo shard multiple servers with your docker image.
But,
mongos cannot find shard nodes in another machines. (separated mongos & shard nodes)
mongos:
image: khezen/mongo:3.4
container_name: mongos
environment:
CONFIG_SERVERS: configsvr/configsvr1:27017
SHARDS: shard1/192.168.0.x:port shard2/192.168.0.x:port
STORAGE_ENGINE: wiredTiger
in another machine
shard1_replica1:
image: khezen/mongo:3.4
container_name: s1-n1
environment:
RS_NAME: shard1
SHARD_SVR: 'y'
MASTER: shard1_replica1
STORAGE_ENGINE: wiredTiger
volumes:
- ./data/mongo/shard1/replica1:/data/db
ports:
- "27011:27017"
restart: always
Please let me know solution.
Thank you.
https://github.com/Khezen/docker-mongo/blob/master/entrypoint.sh#L68
i think this will change to
if [ ! -f "$dbpath"/.mongodb_password_set ] && [ "$auth" == "y" ]; then
Hi,
I am facing this issue when trying to start the container in clean machine. The docker container never starts.
$ docker run -d -p 27017:27017 --name mongo khezen/mongo:latest
1dc83708724e879933d3f5443591c88b4d721f007f7f5be2aaa1b8d25498edae
$ docker logs mongo
$@
/entrypoint.sh: line 11: 7 Illegal instruction (core dumped) $@
The docker version I am using:
$ docker version
Client:
Version: 18.03.0-ce
API version: 1.37
Go version: go1.9.4
Git commit: 0520e24
Built: Wed Mar 21 23:10:01 2018
OS/Arch: linux/amd64
Experimental: false
Orchestrator: swarm
Server:
Engine:
Version: 18.03.0-ce
API version: 1.37 (minimum version 1.12)
Go version: go1.9.4
Git commit: 0520e24
Built: Wed Mar 21 23:08:31 2018
OS/Arch: linux/amd64
Experimental: false
Thanks for the support!
Hi:
Awesome container however, I am having an issue. Whenever I set the
environment:
- DB_USER:root
- DB_PWD:p@ssw0rd
- DB_NAME:blah
- AUTH:y
It doesn't create the DB nor does it set authentication to true. I am able to connect to the running monodb in my container using Compass without credentials; when I try with credentials, it says invalid user for root: p@ssw0rd
. Kindly let me know what could be the issue.
This is my docker-compose.yml
version: '2'
services:
api:
image: node:slim
command: chown -R `id -u` /data/d
volumes:
- /Users/deanclarke/docker/medullan/api:/usr/src/app
command: tail -f /dev/null
depends_on:
- database
ports:
- "8080:8080"
database:
image: khezen/mongo:latest
ports:
- "27017:27017"
environment:
- DB_USER:root
- DB_PWD:p@ssw0rd
- DB_NAME:blah
- AUTH:y
restart: always
Thanks.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.