Giter Club home page Giter Club logo

docker-php's Introduction

Docker PHP Images logo

Docker PHP images

GitHub Workflow Status Source link Authors link Docker Pulls License


Docker images built on top of the official PHP images with the addition of some common and useful extensions, installed with mlocati/docker-php-extension-installer. You can find these images on the Docker Hub (and if you're reading this file, you're probably already there).

An automated build is set up, so they should be always up-to-date with the Dockerfiles in the GitHub repository. Also, every time an official PHP image is updated, a rebuild is triggered, so that you will always find the latest security patches installed in these images.

For development environments, you might want to choose an image with XDebug installed, or one with XHProf, or another with PCOV installed, instead.

Available tags

  • latest
  • 5.6
  • 5.6-apache
  • 5.6-fpm
  • 7.0
  • 7.0-apache
  • 7.0-fpm
  • 7.1
  • 7.1-apache
  • 7.1-fpm
  • 7.2
  • 7.2-apache
  • 7.2-fpm
  • 7.3
  • 7.3-apache
  • 7.3-fpm
  • 7.4
  • 7.4-apache
  • 7.4-fpm
  • 8.0
  • 8.0-apache
  • 8.0-fpm
  • 8.1
  • 8.1-apache
  • 8.1-fpm
  • 8.2
  • 8.2-apache
  • 8.2-fpm
  • 8.3
  • 8.3-apache
  • 8.3-fpm

As you might have guessed, all tags are built on top of the corresponding tag of the official image. Not all tags are supported in order to easen maintenance.

Installed extensions

The following modules and extensions have been enabled, in addition to those you can already find in the official PHP image:

  • amqp
  • bcmath
  • bz2
  • calendar
  • event
  • exif
  • gd
  • gettext
  • iconv
  • imagick
  • intl
  • ldap
  • mbstring
  • mcrypt (only PHP โ‰ค 7.1)
  • memcached
  • mysql (only PHP 5.x)
  • mysqli
  • pdo_mysql
  • pdo_pgsql
  • pgsql
  • redis
  • soap
  • sockets
  • xsl
  • Zend OPcache
  • zip

You will probably not need all this stuff. Even if having some extra extensions loaded ain't a big issue in most cases, you will very likely want to checkout this repository, remove unwanted extensions from the Dockerfile, and build your own image โ€” for sometimes removing is easier than adding. ๐Ÿ˜‰

Composer

Composer is installed globally in all images. Please, refer to their documentation for usage hints. Since 2020/11/01 both version 1 and 2 are installed, available through composer1 and composer2 commands respectively (composer in now a symlink to composer2).
Prestissimo (composer plugin) is installed globally in all images, for use with Composer version 1. It's a plugin that downloads packages in parallel to speed up the installation process of Composer packages.

Contributing

If you find an issue, or have a special wish not yet fulfilled, please open an issue on GitHub providing as many details as you can (the more you are specific about your problem, the easier it is for us to fix it).

Pull requests are welcome, too! ๐Ÿ˜ Please, run make build and make test before attempting a pull request. Also, it would be nice if you could stick to the best practices for writing Dockerfiles.


License

Docker PHP Images is released under the MIT license.

docker-php's People

Contributors

danakishi avatar dependabot[bot] avatar didoda avatar edoardocavazza avatar fquffio avatar fredericbarthelet avatar lamasbr avatar le0m avatar leonnleite avatar nemo64 avatar nstcactus avatar slamdunk avatar temasm avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

docker-php's Issues

Tag Versioning

So as mentioned in #31, I kind of dislike that changes like new extensions etc get pushed into old tags and potentially break old projects or make the version I run on my machine different from the version a co-worker runs on his machine.

So I see a few ways to do this I could think of.

  • add the minor php version to the tag and continue like now ~ just don't update old tags. This would result in the cleanest tags and would be consistent with the base php repository chialab/php:7.1.9-fpm. This could potentially break new projects that pin on the newest php release but since they are still new this shouldn't be a problem ~ my concern is about legacy projects.
  • add a chialab version. This would make updates kind of complicated since you'd now have to track 2 versions. Also I don't now how to make that look nice.

Install Memcached on PHP 7

Memcached extension version 3 supports (only) PHP 7, therefore we can install Memcached on current-gen PHP images as well.

Error: [Error] Call to undefined function App\Shell\ssh2_connect()

Hi Guys

please help
getting below error
2019-01-11 10:35:02 Error: [Error] Call to undefined function App\Shell\ssh2_connect() in /var/www/html/src/Shell/OfflineDepositShell.php on line 24

i have already tried
&& apt-get install -y libssh2-1-dev libssh2-1
&& pecl install ssh2
&& docker-php-ext-enable ssh2

but it's not working
ERROR: Service 'cakephp' failed to build: The command '/bin/sh -c apt-get install -y git libssh2-1 && pecl install ssh2 && docker-php-ext-enable ssh2' returned a non-zero code: 1

Thanks

Add gettext extension

Its a fairly common extension, so i was wondering if it would be possible to add it.

Add imagick extension

Imagick is a rather common extension, so i was wondering if it would be possible to add it.

However, doing so would probably increase the size of the image by quite a bit.

Script to install extensions

This is not strictly an issue, but rather a suggestion.

I've written a well tested a script that automatically installs APT (on Debian) and APK (on Alpine) dependencies, so that (for example) you can write install-php-extensions gd to easily install the php GD extension.

Since for this chialab/docker-php you too have to check these dependencies, what about using that script instead?

Add PHP 7.1

As PHP 7.1 was released, new images should be available.

All tags are serving PHP 8.0.11

It looks like a recent change to this project - using build args for base image selections - has caused all images to use the latest base PHP image.

A few local tests:

docker run -it chialab/php:5.6 php --version

PHP 8.0.11 (cli) (built: Oct 14 2021 21:21:21) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.11, Copyright (c) Zend Technologies
    with Zend OPcache v8.0.11, Copyright (c), by Zend Technologies

docker run -it chialab/php:7.4 php --version

PHP 8.0.11 (cli) (built: Oct 14 2021 21:21:21) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.11, Copyright (c) Zend Technologies
    with Zend OPcache v8.0.11, Copyright (c), by Zend Technologies

The docker image of chialab/php:7.4-apache needs a rebuild to use latest 2.0.x composer version.

The current 2.0x version has an issue with the package laminas-dependency-plugin:

$ composer install --prefer-dist --no-ansi --no-interaction --no-progress --no-scripts --no-dev --no-autoloader

Loading composer repositories with package information
Installing dependencies from lock file

[ErrorException]
assert(): assert($rewriter instanceof DependencySolvingCapableInterface) failed

When updating the composer version this is resolved.

Migrate to GH Actions

travis-ci.org will be closed down on december 31, public repos are required to migrate to travis-ci.com before that date (see newsletter).

As an alternative, we could switch to GitHub Actions.

memcached.so does not exist

I am currently trying to install opcache in the php containers (see: #7), however all old images are failing while building because of memcached. I'm trying to figure out why.

I run the test like with this little script

#!/usr/bin/env bash
set -e

for version in 5.4 5.5 5.6 7.0 7.1
do
    make build-nopull VERSION=${version}
    make test VERSION=${version}
done

for version in 5.4 5.5 5.6 7.0 7.1
do
    make build-nopull -C dev/ VERSION=${version}
    make test -C dev/ VERSION=${version}
done

Memcached Server

Hello,
you have done a great job. I run into an issue. I can't use memcached. I think this is due to the fact that it is'nt installed via your dockerfiles. I'am using php7.2-fpm dockerfile.
Could you please check it
Thanks
?

Add PhpRedis extension

PhpRedis is commonly used in Drupal and other php projects, could we have it installed as well?

Thanks.

Setting docker user

I'd like to run this container (specifically 7.2-apache) while mounting a local volume to /var/www/html. Besides php:7.2-apache being very complicated to install extensions, I was able to pass --user 1002:1002 to the docker run command without issues and have the apache user have correct write access to my local directory.

When I don't pass --user to this container, it runs, but whenever a script needs to write it doesn't have permission. On the other hand, when I do pass --user 1002:1002 to the container, it immediately exists with

[Wed Mar 06 15:40:30.704749 2019] [core:error] [pid 1] (13)Permission denied: AH00099: could not create /var/run/apache2/apache2.pid
[Wed Mar 06 15:40:30.704806 2019] [core:error] [pid 1] AH00100: apache2: could not log pid to file /var/run/apache2/apache2.pid

Bundle UNZIP package

Hi, the most common way to install project nowadays is through composer, that for most of the distribution uses unzip to unpack the dependencies.

At the time of writing if fact I'm forced to do this everytime:

apt-get update && apt-get install -y unzip

May we bundle unzip natively in these docker images?

Replace `MAINTAINER` instruction

MAINTAINER instruction in Dockerfiles became deprecated quite a long time ago, but we're still using it.

MAINTAINER instruction should be replaced with a LABEL. We should evaluate using Label Schema for this purpose.

Broken build with latest version of XDebug

XDebug 2.6.0 was released on Jan 29, and it apparently doesn't support PHP 5.5 and 5.6 any more, and that causes a failure when building chialab/php-dev:5.{5,6} images.

On the other hand, we might be able to use a stable version of XDebug for PHP 7.2 images, that as of now use XDebug 2.0 RC1.

opcache extension

How about installing opcache? It is useful basically everywhere or at least in the apache/fpm versions.

fatal error call to undefined function mysql_query() cakephp

Hi Chialab - appriciate if you can help quit urgent!!

getting error php7.1 apache :

2018-07-04 12:25:10 Error: [Cake\Routing\Exception\MissingControllerException] Controller class Css could not be found. in /var/www/html/vendor/cakephp/cakephp/src/Http/ControllerFactory.php on line 101
Exception Attributes: array (
  'class' => 'Css',
  'plugin' => false,
  'prefix' => false,
  '_ext' => false,
)
Request URL: /css/bootstrap.min.css.map
Client IP: 211.24.100.121
Stack Trace:
#0 /var/www/html/vendor/cakephp/cakephp/src/Http/ControllerFactory.php(39): Cake\Http\ControllerFactory->missingController(Object(Cake\Http\ServerRequest))
#1 /var/www/html/vendor/cakephp/cakephp/src/Routing/Filter/ControllerFactoryFilter.php(64): Cake\Http\ControllerFactory->create(Object(Cake\Http\ServerRequest), Object(Cake\Http\Response))
#2 /var/www/html/vendor/cakephp/cakephp/src/Routing/Filter/ControllerFactoryFilter.php(49): Cake\Routing\Filter\ControllerFactoryFilter->_getController(Object(Cake\Http\ServerRequest), Object(Cake\Http\Response))
#3 /var/www/html/vendor/cakephp/cakephp/src/Routing/DispatcherFilter.php(146): Cake\Routing\Filter\ControllerFactoryFilter->beforeDispatch(Object(Cake\Event\Event))
#4 /var/www/html/vendor/cakephp/cakephp/src/Event/EventManager.php(353): Cake\Routing\DispatcherFilter->handle(Object(Cake\Event\Event), Object(Cake\Http\ServerRequest), Object(Cake\Http\Response))
#5 /var/www/html/vendor/cakephp/cakephp/src/Event/EventManager.php(330): Cake\Event\EventManager->_callListener(Array, Object(Cake\Event\Event))
#6 /var/www/html/vendor/cakephp/cakephp/src/Event/EventDispatcherTrait.php(114): Cake\Event\EventManager->dispatch(Object(Cake\Event\Event))
#7 /var/www/html/vendor/cakephp/cakephp/src/Http/ActionDispatcher.php(79): Cake\Http\ActionDispatcher->dispatchEvent('Dispatcher.befo...', Array)
#8 /var/www/html/vendor/cakephp/cakephp/src/Routing/Dispatcher.php(67): Cake\Http\ActionDispatcher->dispatch(Object(Cake\Http\ServerRequest), Object(Cake\Http\Response))
#9 /var/www/html/webroot/index.php(36): Cake\Routing\Dispatcher->dispatch(Object(Cake\Http\ServerRequest), Object(Cake\Http\Response))
#10 {main}
root@webcash:~/var/www/html/webroot# ls
css  favicon.ico  files  fonts  img  index.php  js  return.php  store.php
<VirtualHost *:443>
   ServerName sandbox.webworld.com.my
   #ServerAlias www.webworld.com.my
   DocumentRoot /var/www/html/;
   DirectoryIndex index.php
   <Directory /var/www/html/>
       Options -Indexes
       AllowOverride All
       Order deny,allow
       Allow from All
   </Directory>
   <Directory "/var/www/html/pmadmin">
       AuthType Basic
       AuthName "Restricted Content"
       AuthUserFile /etc/apache2/.htpasswd
       Require valid-user
   </Directory>
   ErrorLog ${APACHE_LOG_DIR}/error.log
   CustomLog ${APACHE_LOG_DIR}/access.log combined
   SSLEngine on
   SSLHonorCipherOrder On
   SSLProtocol TLSv1.2
   SSLCertificateFile /etc/ssl/webcash2018.crt
   SSLCertificateKeyFile /etc/ssl/server.key
   SSLCertificateChainFile /etc/ssl/webcash2018.ca-bundle
</VirtualHost>

Virus in contailner image

Hi
PHP 7.4 fpm image has a kdevtmpfsi virus miner and It utilized 100% of all CPUs and RAM...
I think it is not a coincidence problem!
Capture20

Memory allocation error but no php.ini how to modify memory setting

2018-09-18 17:20:08 Error: Fatal Error (1): Allowed memory size of 134217728 bytes exhausted (tried to allocate 4096 bytes) in [/var/www/html/vendor/cakephp/cakephp/src/Database/Statement/PDOStatement.php, line 71]
Request URL: /admin/recons/upload
Referer URL: https://xx.com/admin/recons/upload
Client IP: 211.24.107.194
Trace:
Cake\Error\BaseErrorHandler::handleFatalError() - CORE/src/Error/BaseErrorHandler.php, line 223
Cake\Error\BaseErrorHandler::Cake\Error{closure}() - CORE/src/Error/BaseErrorHandler.php, line 104
[main] - [internal], line ??

root@569d9c5af48f:/var/www/html# php --ini
Configuration File (php.ini) Path: /usr/local/etc/php
Loaded Configuration File: (none)
Scan for additional .ini files in: /usr/local/etc/php/conf.d
Additional .ini files parsed: /usr/local/etc/php/conf.d/docker-php-ext-bcmath.ini,
/usr/local/etc/php/conf.d/docker-php-ext-bz2.ini,
/usr/local/etc/php/conf.d/docker-php-ext-calendar.ini,
/usr/local/etc/php/conf.d/docker-php-ext-exif.ini,
/usr/local/etc/php/conf.d/docker-php-ext-gd.ini,
/usr/local/etc/php/conf.d/docker-php-ext-gettext.ini,
/usr/local/etc/php/conf.d/docker-php-ext-intl.ini,
/usr/local/etc/php/conf.d/docker-php-ext-ldap.ini,
/usr/local/etc/php/conf.d/docker-php-ext-mcrypt.ini,
/usr/local/etc/php/conf.d/docker-php-ext-memcached.ini,
/usr/local/etc/php/conf.d/docker-php-ext-mysqli.ini,
/usr/local/etc/php/conf.d/docker-php-ext-opcache.ini,
/usr/local/etc/php/conf.d/docker-php-ext-pdo_mysql.ini,
/usr/local/etc/php/conf.d/docker-php-ext-pdo_pgsql.ini,
/usr/local/etc/php/conf.d/docker-php-ext-pgsql.ini,
/usr/local/etc/php/conf.d/docker-php-ext-redis.ini,
/usr/local/etc/php/conf.d/docker-php-ext-soap.ini,
/usr/local/etc/php/conf.d/docker-php-ext-zip.ini

Extension error

Hi I am just using FROM chialab/php:7.1-apache in my Dockerfile and I get the following error when I later run php from the container.

PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/local/lib/php/extensions/no-debug-non-zts-20160303/gd.so' - libjpeg.so.62: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/local/lib/php/extensions/no-debug-non-zts-20160303/intl.so' - libicui18n.so.52: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/local/lib/php/extensions/no-debug-non-zts-20160303/pdo_pgsql.so' - libpq.so.5: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/local/lib/php/extensions/no-debug-non-zts-20160303/pgsql.so' - libpq.so.5: cannot open shared object file: No such file or directory in Unknown on line 0

All the extensions do exist in the target folder

root@045bfca22cda:/var/www/html# ls /usr/local/lib/php/extensions/no-debug-non-zts-20160303/ -la
total 6620
drwxr-sr-x 1 root staff    4096 Oct 10 15:20 .
drwxr-sr-x 1 root staff    4096 Oct 10 15:14 ..
-rw-r--r-- 1 root staff   44616 Oct 10 15:14 bcmath.so
-rw-r--r-- 1 root staff   32096 Oct 10 15:14 bz2.so
-rw-r--r-- 1 root staff   41888 Oct 10 15:14 calendar.so
-rw-r--r-- 1 root staff  445048 Oct 10 15:19 gd.so
-rw-r--r-- 1 root staff   49896 Oct 10 15:14 iconv.so
-rw-r--r-- 1 root staff 1384504 Oct 10 15:15 intl.so
-rw-r--r-- 1 root staff 1588360 Oct 10 15:16 mbstring.so
-rw-r--r-- 1 root staff   54944 Oct 10 15:16 mcrypt.so
-rw-r--r-- 1 root staff  375448 Oct 10 15:20 memcached.so
-rw-r--r-- 1 root staff  170120 Oct 10 15:17 mysqli.so
-rw-r--r-- 1 root staff  433600 Oct 10 15:17 opcache.so
-rw-r--r-- 1 root staff   34968 Oct 10 15:17 pdo_mysql.so
-rw-r--r-- 1 root staff   54920 Oct 10 15:18 pdo_pgsql.so
-rw-r--r-- 1 root staff  166792 Oct 10 15:18 pgsql.so
-rw-r--r-- 1 root staff 1336560 Oct 10 15:20 redis.so
-rw-r--r-- 1 root staff  347120 Oct 10 15:18 soap.so
-rw-r--r-- 1 root staff  178736 Oct 10 15:19 zip.so

Docker 17.09.0-ce, build afdb6d4 on windows

Can't pull chialab/php-dev:7.2

$ docker pull chialab/php-dev:7.2
Error response from daemon: manifest for chialab/php-dev:7.2 not found

Is anyone experiencing the same issue?

PHP 5.6 partial support

The official image available for PHP 5.6 is no longer updated, as PHP 5.6 has reached EOL status. The image was last rebuilt 2019-01-23T00: 05: 39.53748511Z. This means that both PHP and all libraries used to build PHP as well as the system libraries contained in the image are no longer updated.

In my environment - unfortunately - I have to provide PHP 5.6. I am thinking about minimizing the risks involved. I believe that a regular update of the operating system (and Apache etc.) can improve security in a narrow way, despite the uncomfortable situation of non-updated PHP 5.6.

What do you think to change the base image for PHP 5.6 to distro and self compiling of PHP?

PHP 7.2

PHP 7.2 is now in RC phase. According to the official timetable it should become GA by the end of November.

We should save the date and add 7.2 images. Official Docker images for the RC releases are available, so we can use those as a starting point in the meanwhile.

"Cannot load Xdebug - it was already loaded"

I've only tested against chialab/php-dev:7.4

php --ini reports two different files trying to load xdebug, xdebug.ini and docker-php-ext-xdebug.ini, so these error is appearing in various output.

Can one of these references be removed? It looks like xdebug.ini is created by the Dockerfile within this project.

Upgrade to Composer 2

Composer 2 was released last week, this issue is for discussion about its adoption. See here for Composer 2 upgrade guide and possible breaking changes.

Current proposals (see #72 (comment)):

  1. have separate images for Composer 1 and 2
  2. install both as composer1 and composer2, and create a composer symlink to the latter

Either way, builds are currently failing because hirak/prestissimo is not compatible with composer 2, nor it is needed with it.

Re-think CI for dev images

At the present status, Travis CI jobs for dev images build such images on top of chialab/php images pulled from Docker Hub.

This causes problems when adding features to base chialab/php images, since tests will very likely fail for chialab/php-dev images (see #11 and #12). The CI for dev images must be re-thought.

Add unzip

Would be great if unzip could be added to the image. That way composer will unzip the packages faster and more reliably (and the warning about it would be gone ;-)).

XDebug fails to install in PHP 5.4 dev image

XDebug extension became unavailable in PHP 5.4, and can't be installed via PECL anymore:

Step 3 : RUN pecl install xdebug     && echo "zend_extension=\"$(php-config --extension-dir)/xdebug.so\"" > $PHP_INI_DIR/conf.d/xdebug.ini
 ---> Running in fe7f8e74e4cb
pecl/xdebug requires PHP (version >= 5.5.0), installed version is 5.4.45
No valid packages found
install failed
The command '/bin/sh -c pecl install xdebug     && echo "zend_extension=\"$(php-config --extension-dir)/xdebug.so\"" > $PHP_INI_DIR/conf.d/xdebug.ini' returned a non-zero code: 1

Is there a rule for which extensions are included?

I work with typo3 which requires the extensions bcmath and soap.
BCMath is secretly also required by a swiftmailers NTLMAuthenticator. (just as a more common usage example)
It is fairly easy to install them afterwards but still a step slower than if they were installed already.
Is there a rule for which extensions are included?

Missing EXIF extension

Exif extension is a common requirement, and should come pre-installed in our Docker images.

It should be enough to add exif to the list of arguments passed to docker-php-ext-install, and update assertions in Makefile.

Dev images (inside dev/) should not be updated directly, because they extend base images and therefore inherit new extension from them.

Refactor project structure

As the number of PHP versions increases, the number of Dockerfiles raises in a linear way. This brings the repository in a state that is hard to maintain: adding a feature requires a lot of files to be modified in the same fashion, there is a lot of duplicated code, we lack a single source of truth, and so on.

We could refactor repository structure in a way that takes advantage of Docker build arguments to have a single Dockerfile that is used as a base for all the images.

In order for automatic builds to keep working, it will probably become required to have a custom build hook.

PHP 7.3

With PHP 7.3 RC3 being out, it's time we start working on the new images.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.