GithubHelp home page GithubHelp logo

docker-library / percona Goto Github PK

View Code? Open in Web Editor NEW
51.0 13.0 70.0 114 KB

DEPRECATED Docker Official Image packaging for Percona Server, new repo:

Home Page: https://github.com/percona/percona-docker/

License: Apache License 2.0

Shell 51.17% Dockerfile 48.83%

percona's Introduction

Maintained by: Percona

This is the Git repo of the Docker "Official Image" for percona (not to be confused with any official percona image provided by percona upstream). See the Docker Hub page for the full readme on how to use this Docker image and for information regarding contributing and issues.

The full description from Docker Hub is generated over in docker-library/docs, specifically in docker-library/docs/percona.

See a change merged here that doesn't show up on Docker Hub yet?

Check the "library/percona" manifest file in the docker-library/official-images repo, especially PRs with the "library/percona" label on that repo.

For more information about the official images process, see the docker-library/official-images readme.


Build Status Badges (per-arch)
amd64
build status badge

percona's People

Contributors

docker-library-bot avatar lunika avatar romuald avatar tianon avatar yosifkit 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

Watchers

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

percona's Issues

Restarting mysql causes docker container to exit

Started container with docker run -v /tmp/:/tmp --name percona -p 3344:3306 -e MYSQL_ROOT_PASSWORD=123 -d percona:5.7

and then docker exec -i -t percona bash

once inside the container every time i try to restart or to stop mysql /etc/init.d/mysql stop causes docker container to stop and exit

Access denied when root password is empty

First, thanks for this image. Good job on this! ๐Ÿ‘

My problem

I am trying to use Percona for local development of a Django project. To make it compatible with virtual machines (using Vagrant + Virtualbox, for example) I set the root password to be empty.

Django settings:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'my_db',
        'USER': 'root',
        'PASSWORD': '',
        'HOST': 'db',
        'TEST_CHARSET': 'UTF8',
    },
}

My docker-compose.yml:

version: '2'
services:
  db:
    image: percona
    environment:
      MYSQL_DATABASE: my_db
      MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'

The error

django.db.utils.OperationalError: (1045, u"Access denied for user 'root'@'172.19.0.4' (using password: NO)")

It works when I set passwords though...

percona 5.7 is started using systemd

Seems like after installing percona 5.7 we miss a

RUN systemctl disable mysql

Otherwise the mysqld server is started using systemd all the time, not using the entrypoint

percona 5.7 bug

sudo docker logs some-percona
error: exec failed: permission denied

sudo docker run --name some-percona -e MYSQL_ROOT_PASSWORD=my-secret-pw -d percona:5.7

host ubuntu 14.04

Cant mount local volume to percona-server volume

Hi
I'm running on CentOS 7 instance with 17.03.1-ce running on it
I've been running other dockers for a while now with mounted volumes without any hickups
But this is the first time I'm getting into problems and maybe you have idea what the issue (if its a bug) or how to fix it

So here's how my docker-compose.yml looks like

version: '2'
services:
  mysql:
    container_name: "mysql"
    image: percona:5.7
    volumes:
      - /var/data/mysql:/var/lib/mysql
    ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: "secret"

And i keep getting this annoying error when running it

mkdir: cannot create directory '/var/lib/mysql/': File exists

The end result is the container crashes and not running at all

When not mounting the volume everything works as expected but as crazy as it sounds im looking for persistent solution :)

ARM64 Support

Any chance we can have support for ARM64 enabled?

It looks as if the Dockerfile currently pulls in pre-built packages from the Percona repos.

For ARM64, perhaps we can build from source, or pull from another repo?

Unable to pull from Dockerhub

$ docker pull percona
Using default tag: latest
latest: Pulling from library/percona
6a5a5368e0c2: Downloading 40.19 MB/40.19 MB
0689904e86f0: Download complete 
486087a8071d: Download complete 
3eff318f6785: Download complete 
8c6f9c30cf5d: Downloading 4.162 MB/4.162 MB
2c367d378ebb: Download complete 
c4eacbef891d: Download complete 
4af4a735e960: Download complete 
86caa978a607: Download complete 
352dce870ac0: Download complete 
910adc7eb76d: Download complete 
unexpected EOF

I've tried docker pull 5.7 and docker pull 5.7.14 and get the same unexpected EOF

TokuDB?

Hi I have been experimenting with enabling the TokuDB engine in Percona Server . . . Results here https://github.com/reevoo/percona-tokudb, if it is something you might be interesting in merging I can open a proper PR?

It might be best as something on another tag, or with an env var to enable it?

docker-entrypoint-initdb.d ignored?

Is docker-entrypoint-initdb.d ignored?
When my cluster starts it doesn't log any errors in the mysqld log, yet the .sql in docker-entrypoint-initdb.d is not executed automatically.
If i docker exec into one container and do:

cd docker-entrypoint-initdb.d
mysql -u root -pmypasswd -D myschema < schema.sql

it works just fine.
Thanks everyone,
Robert

"/docker-entrypoint.sh": permission denied

Error response from daemon: Cannot start container fce4fd332592b29a99ea41da6f065b188b5c7549d472e384f0193d017a5dd6e7: [8] System error: exec: "/docker-entrypoint.sh": permission denied

Can't mount local volume, its give permission denied.

The problem on docker-compose up:

database    | Initializing database
database    | mysqld: Can't create/write to file '/var/lib/mysql/is_writable' (Errcode: 13 - Permission denied)
database    | 2018-11-28T15:08:33.615511Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
database    | 2018-11-28T15:08:33.618209Z 0 [ERROR] --initialize specified but the data directory exists and is not writable. Aborting.
database    | 2018-11-28T15:08:33.618234Z 0 [ERROR] Aborting
database    | 
database exited with code 1

My docker-compose.yml

version: '2'
services:
    database:
        image: percona 
        container_name: database
        environment:
            - MYSQL_ROOT_PASSWORD=root
        volumes:
            -  ./database:/var/lib/mysql
        ports:
            - "3306:3306"

Docker version

$ docker -v
Docker version 18.09.0, build 4d60db4
$ docker-compose version
docker-compose version 1.23.1, build b02f1306
docker-py version: 3.5.0
CPython version: 3.6.7
OpenSSL version: OpenSSL 1.1.0f  25 May 2017

Selinux is disabled

$ sestatus
SELinux status:                 disabled

Trivia

Folder is created

It's create ./database folder like this;
drwxr-xr-x 2 root root 6 nov 28 13:04 database

Mysql official works

If instead of Percona I use Mysql its works fine.

version: '2'
services:
    database:
        image: mysql 
        container_name: database
        environment:
            - MYSQL_ROOT_PASSWORD=root
        volumes:
            -  ./database:/var/lib/mysql
        ports:
            - "3306:3306"

Poor solution

I make it works creating ./database with 777 permission in advance.
But I'd prefer that works like MySql official image.

OS

cat /etc/os-release 
NAME=Fedora
VERSION="29 (Workstation Edition)"
ID=fedora
VERSION_ID=29
PLATFORM_ID="platform:f29"
PRETTY_NAME="Fedora 29 (Workstation Edition)"
ANSI_COLOR="0;34"
CPE_NAME="cpe:/o:fedoraproject:fedora:29"
HOME_URL="https://fedoraproject.org/"
DOCUMENTATION_URL="https://docs.fedoraproject.org/en-US/fedora/f29/system-administrators-guide/"
SUPPORT_URL="https://fedoraproject.org/wiki/Communicating_and_getting_help"
BUG_REPORT_URL="https://bugzilla.redhat.com/"
REDHAT_BUGZILLA_PRODUCT="Fedora"
REDHAT_BUGZILLA_PRODUCT_VERSION=29
REDHAT_SUPPORT_PRODUCT="Fedora"
REDHAT_SUPPORT_PRODUCT_VERSION=29
PRIVACY_POLICY_URL="https://fedoraproject.org/wiki/Legal:PrivacyPolicy"
VARIANT="Workstation Edition"
VARIANT_ID=workstation
$ uname -r
4.19.4-300.fc29.x86_64

Upgrade version via mysql_upgrade

docker-library/mysql#130

In this example CMD is 'bash' and mysql_upgrade started manually

root@321568b77f23:/# mysql_upgrade
Looking for 'mysql' as: mysql
Looking for 'mysqlcheck' as: mysqlcheck
Error: Failed while fetching Server version! Could be due to unauthorized access.
FATAL ERROR: Upgrade failed

How to run the mysql_upgrade ?

Move database initialization and loading from /docker-entrypoint-initdb.d during build instead of on container start

Database containers would be far more useful for local/test/dev environments if they were ready to be used very quickly after container startup (versus waiting 30s to several minutes for initialization and loading of .sql or .sh files in /docker-entrypoint-initdb.d on startup. This would enable distributing production-mirrored database schemas and fixture/test data pre-loaded so it is readily available on startup.

I've had great success providing ready-to-use end-to-end/integration test fixture containers with this approach for other datastores, e.g. Cassandra, Zookeeper. I essentially have this for MySQL databases as well, except for the really slow wait time and the fact that MySQL starts/stops/starts again (healthchecks are misleading). You have to wait a fair amount of time before the DDL and DML statements in /docker-entrypoint-initdb.d finish running.

I've been working on a patch to enable this in these containers, or at least make it possible for people to leverage by using these containers as base images (FROM). The cleanest way I can see to do this is to make docker-entrypoint.sh allow a switch to be passed (buildinit or something) to it to avoid the final step exec "$@" at the end...

The problem I'm running into is when I try to start the container after it finishes building w/ the schema & fixture data already loaded is I get an error:

171125 23:43:44 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist

Messy proof of concept: https://github.com/stantonk/percona/tree/perform-bootstrapping-during-build/5.5

Here's a Dockerfile trying to use the percona image as a base:

FROM percona:5.5

ENV MYSQL_ALLOW_EMPTY_PASSWORD=yes

ADD ./schema/mysql-maindb.sql /docker-entrypoint-initdb.d
ADD ./triggers/triggers.sql /docker-entrypoint-initdb.d

RUN echo "********bootstrapping database*********" \
    && chown -R mysql:mysql /var/lib/mysql /var/run/mysqld \
    && /usr/local/bin/bootstrap-mysql.sh mysqld

CMD ["mysqld"]

This builds fine, and appears to bootstrap from docker-entrypoint-initdb.d:

$  docker build --no-cache -t mysql-maindb .
Sending build context to Docker daemon  323.6kB
Step 1/6 : FROM percona:5.5
 ---> f054fae95c86
Step 2/6 : ENV MYSQL_ALLOW_EMPTY_PASSWORD yes
 ---> Running in 98b077bbc248
 ---> 4063932e4e21
Removing intermediate container 98b077bbc248
Step 3/6 : ADD ./schema/mysql-maindb.sql /docker-entrypoint-initdb.d
 ---> 6295eac9dcb0
Removing intermediate container 6ab71d72f91f
Step 4/6 : ADD ./triggers/triggers.sql /docker-entrypoint-initdb.d
 ---> ccacbaa87b57
Removing intermediate container c89a8821b22a
Step 5/6 : RUN echo "********bootstrapping database*********"     && chown -R mysql:mysql /var/lib/mysql /var/run/mysqld     && /usr/local/bin/bootstrap-mysql.sh mysqld
 ---> Running in e84d157d3427
********bootstrapping database*********
Initializing database
171125 23:52:03 [Warning] Using unique option prefix key_buffer instead of key_buffer_size is deprecated and will be removed in a future release. Please use the full name instead.
171125 23:52:03 [Note] Ignoring --secure-file-priv value as server is running with --bootstrap.
171125 23:52:03 [Note] /usr/sbin/mysqld (mysqld 5.5.57-38.9) starting as process 66 ...
171125 23:52:03 [Warning] Using unique option prefix key_buffer instead of key_buffer_size is deprecated and will be removed in a future release. Please use the full name instead.
171125 23:52:03 [Note] Ignoring --secure-file-priv value as server is running with --bootstrap.
171125 23:52:03 [Note] /usr/sbin/mysqld (mysqld 5.5.57-38.9) starting as process 72 ...

PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:

/usr/bin/mysqladmin -u root password 'new-password'
/usr/bin/mysqladmin -u root -h  password 'new-password'

Alternatively you can run:
/usr/bin/mysql_secure_installation

which will also give you the option of removing the test
databases and anonymous user created by default.  This is
strongly recommended for production servers.

See the manual for more instructions.

Please report any problems at
  https://bugs.launchpad.net/percona-server/+filebug

Percona recommends that all production deployments be protected with a support
contract (http://www.percona.com/mysql-suppport/) to ensure the highest uptime,
be eligible for hot fixes, and boost your team's productivity.
Database initialized
171125 23:52:03 [Warning] Using unique option prefix key_buffer instead of key_buffer_size is deprecated and will be removed in a future release. Please use the full name instead.
171125 23:52:03 [Note] mysqld (mysqld 5.5.57-38.9) starting as process 76 ...
MySQL init process in progress...
171125 23:52:03 [Warning] Using unique option prefix myisam-recover instead of myisam-recover-options is deprecated and will be removed in a future release. Please use the full name instead.
171125 23:52:03 [Note] Plugin 'FEDERATED' is disabled.
171125 23:52:03 InnoDB: The InnoDB memory heap is disabled
171125 23:52:03 InnoDB: Mutexes and rw_locks use GCC atomic builtins
171125 23:52:03 InnoDB: Compressed tables use zlib 1.2.8
171125 23:52:03 InnoDB: Using Linux native AIO
171125 23:52:03 InnoDB: Initializing buffer pool, size = 128.0M
171125 23:52:03 InnoDB: Completed initialization of buffer pool
InnoDB: The first specified data file ./ibdata1 did not exist:
InnoDB: a new database to be created!
171125 23:52:03  InnoDB: Setting file ./ibdata1 size to 10 MB
InnoDB: Database physically writes the file full: wait...
171125 23:52:03  InnoDB: Log file ./ib_logfile0 did not exist: new to be created
InnoDB: Setting log file ./ib_logfile0 size to 5 MB
InnoDB: Database physically writes the file full: wait...
171125 23:52:03  InnoDB: Log file ./ib_logfile1 did not exist: new to be created
InnoDB: Setting log file ./ib_logfile1 size to 5 MB
InnoDB: Database physically writes the file full: wait...
InnoDB: Doublewrite buffer not found: creating new
InnoDB: Doublewrite buffer created
InnoDB: 127 rollback segment(s) active.
InnoDB: Creating foreign key constraint system tables
InnoDB: Foreign key constraint system tables created
171125 23:52:03  InnoDB: Waiting for the background threads to start
MySQL init process in progress...
171125 23:52:04 Percona XtraDB (http://www.percona.com) 5.5.57-38.9 started; log sequence number 0
171125 23:52:04 [Warning] 'user' entry 'root@e84d157d3427' ignored in --skip-name-resolve mode.
171125 23:52:04 [Warning] 'user' entry '@e84d157d3427' ignored in --skip-name-resolve mode.
171125 23:52:04 [Warning] 'proxies_priv' entry '@ root@e84d157d3427' ignored in --skip-name-resolve mode.
171125 23:52:04 [Note] Event Scheduler: Loaded 0 events
171125 23:52:04 [Note] mysqld: ready for connections.
Version: '5.5.57-38.9'  socket: '/var/run/mysqld/mysqld.sock'  port: 0  Percona Server (GPL), Release 38.9, Revision fc6d4f87a88
Warning: Unable to load '/usr/share/zoneinfo/iso3166.tab' as time zone. Skipping it.
Warning: Unable to load '/usr/share/zoneinfo/leap-seconds.list' as time zone. Skipping it.
Warning: Unable to load '/usr/share/zoneinfo/zone.tab' as time zone. Skipping it.
171125 23:52:07 [Warning] 'proxies_priv' entry '@ root@e84d157d3427' ignored in --skip-name-resolve mode.

/usr/local/bin/bootstrap-mysql.sh: running /docker-entrypoint-initdb.d/mysql-maindb.sql


/usr/local/bin/bootstrap-mysql.sh: running /docker-entrypoint-initdb.d/triggers.sql


171125 23:52:09 [Note] mysqld: Normal shutdown

171125 23:52:09 [Note] Event Scheduler: Purging the queue. 0 events
171125 23:52:09  InnoDB: Starting shutdown...
171125 23:52:13  InnoDB: Shutdown completed; log sequence number 3042552
171125 23:52:13 [Note] mysqld: Shutdown complete


MySQL init process done. Ready for start up.

 ---> 5fd5922e78d3
Removing intermediate container e84d157d3427
Step 6/6 : CMD mysqld
 ---> Running in 4ec998af647b
 ---> b3ccbeb8e52a
Removing intermediate container 4ec998af647b
Successfully built b3ccbeb8e52a
Successfully tagged mysql-maindb:latest

But when the resulting image is started, it fails:

$  docker run -p3306:3306 mysql-maindb:latest
about to exec... /usr/local/bin/docker-entrypoint.sh mysqld
171125 23:53:24 [Warning] Using unique option prefix key_buffer instead of key_buffer_size is deprecated and will be removed in a future release. Please use the full name instead.
171125 23:53:24 [Note] mysqld (mysqld 5.5.57-38.9) starting as process 1 ...
171125 23:53:24 [Warning] Using unique option prefix myisam-recover instead of myisam-recover-options is deprecated and will be removed in a future release. Please use the full name instead.
171125 23:53:24 [Note] Plugin 'FEDERATED' is disabled.
mysqld: Table 'mysql.plugin' doesn't exist
171125 23:53:24 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
171125 23:53:24 InnoDB: The InnoDB memory heap is disabled
171125 23:53:24 InnoDB: Mutexes and rw_locks use GCC atomic builtins
171125 23:53:24 InnoDB: Compressed tables use zlib 1.2.8
171125 23:53:24 InnoDB: Using Linux native AIO
171125 23:53:24 InnoDB: Initializing buffer pool, size = 128.0M
171125 23:53:24 InnoDB: Completed initialization of buffer pool
InnoDB: The first specified data file ./ibdata1 did not exist:
InnoDB: a new database to be created!
171125 23:53:24  InnoDB: Setting file ./ibdata1 size to 10 MB
InnoDB: Database physically writes the file full: wait...
171125 23:53:25  InnoDB: Log file ./ib_logfile0 did not exist: new to be created
InnoDB: Setting log file ./ib_logfile0 size to 5 MB
InnoDB: Database physically writes the file full: wait...
171125 23:53:25  InnoDB: Log file ./ib_logfile1 did not exist: new to be created
InnoDB: Setting log file ./ib_logfile1 size to 5 MB
InnoDB: Database physically writes the file full: wait...
InnoDB: Doublewrite buffer not found: creating new
InnoDB: Doublewrite buffer created
InnoDB: 127 rollback segment(s) active.
InnoDB: Creating foreign key constraint system tables
InnoDB: Foreign key constraint system tables created
171125 23:53:25  InnoDB: Waiting for the background threads to start
171125 23:53:26 Percona XtraDB (http://www.percona.com) 5.5.57-38.9 started; log sequence number 0
171125 23:53:26 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist

I'm sure I am doing something silly but this error message is rather opaque in what it actually means, and I'm not sure how to inspect those tables if I can't get mysql to start.

Socket-configuration missing (5.7)?

It seems, like there is no way to connect using a socket ( at least not in 5.7 )

i think we need to do the following during bootstrap

mysql -e "INSTALL PLUGIN auth_socket SONAME 'auth_socket.so'"
mysql -e "USE mysql; UPDATE user SET plugin='auth_socket' WHERE user='root'"

this enabled socket auth and thus,

mysqladmin -h localhost reload

works

SQL dump file not imported during container creating

I want to import the database structure of my project when the container is being created but looks like it does nothing.

This is how I have the container set up:

login-data-mysql:
    image: percona/percona-server
    environment:
      - MYSQL_ALLOW_EMPTY_PASSWORD=yes
      - MYSQL_DATABASE=users
      - MYSQL_USER=users
      - MYSQL_PASSWORD=******
    volumes:
      - ./login/docker/mysql:/docker-entrypoint-initdb.d:ro

Inside of login/docker/mysql there is a file called dump.sql but it never gets imported.

What am I doing wrong? Any help would be appreciated.

Exit code 141 when launching container on RHEL 6.6

Percona container exits immediately with Exited (141) on my RHEL 6.6 server.

docker run --name some-percona -e MYSQL_ROOT_PASSWORD=mysecretpassword -d percona
e6f12f0182536368c5b5db8385fbbf21627c49bfea8d501a6ea08a075c5ec0c3

$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e6f12f018253 percona:5 "/docker-entrypoint. 10 seconds ago Exited (141) 9 seconds ago some-percona

$ docker --version
Docker version 1.5.0, build a8a31ef/1.5.0

$ uname -a
Linux nw-platform-sbx01 2.6.32-504.12.2.el6.x86_64 #1 SMP Sun Feb 1 12:14:02 EST 2015 x86_64 x86_64 x86_64 GNU/Linux

I made sure I pulled the latest image, but no luck. This works fine on my Ubuntu 14.04 and Centos 7 hosts.

Can't use RocksDB

Now that RocksDB is included in Percona Server 5.7.18-16, I can't find any documentation how to run it. This is the recommended default my.cnf and the error I got.

[mysqld]
rocksdb
default-storage-engine=rocksdb
skip-innodb
default-tmp-storage-engine=MyISAM
collation-server=latin1_bin #(or utf8_bin, binary)

#log-bin
binlog-format=ROW

RESULTING STARTUP LOGS
[ERROR] unknown option '--rocksdb'

I found an old blog post that recommended that I use

[mysqld]
plugin-load=rocksdb=ha_rocksdb.so;rocksdb_cfstats=ha_rocksdb.so;rocksdb_dbstats=ha_rocksdb.so;rocksdb_perf_context=ha_rocksdb.so;rocksdb_perf_context_global=ha_rocksdb.so;rocksdb_cf_options=ha_rocksdb.so;rocksdb_compaction_stats=ha_rocksdb.so;rocksdb_global_info=ha_rocksdb.so;rocksdb_ddl=ha_rocksdb.so;rocksdb_index_file_map=ha_rocksdb.so;rocksdb_locks=ha_rocksdb.so;rocksdb_trx=ha_rocksdb.so

RESULTING STARTUP LOGS
[ERROR] Can't open shared library '/usr/lib/mysql/plugin/ha_rocksdb.so' (errno: 0 /usr/lib/mysql/plugin/ha_rocksdb.so: cannot open shared object file: No such file or directory)
[ERROR] Couldn't load plugin named 'rocksdb' with soname 'ha_rocksdb.so'.
[ERROR] unknown option '--rocksdb'

How do I run myrocks with this image?

Need an option to always import files in /docker-entrypoint-initdb.d

our build process has no way to clean the mounted volume for the databases. sometimes we need to persist them, which is perfect already. other times we want to re-run the scripts to drop and re-create all databases. Currently there does not seem to be a way to work around this, is this feasible to work in and is there a way we can work around this for the time being?

DockerFile did not work

I executed dockerFile for Mysql5.7 and it failed.
Do someone still support this docker?

Notes : This is error.
gpg: keyserver receive failed: Cannot assign requested address
The command '/bin/sh -c set -ex; fetchDeps=' ca-certificates wget '; apt-get update; apt-get install -y --no-install-recommends $fetchDeps; rm -rf /var/lib/apt/lists/*; dpkgArch="$(dpkg --print-architecture | awk -F- '{ print $NF }')"; wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch"; wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch.asc"; export GNUPGHOME="$(mktemp -d)"; gpg --keyserver ha.pool.sks-keyservers.net --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4; gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu; command -v gpgconf > /dev/null && gpgconf --kill all || :; rm -r "$GNUPGHOME" /usr/local/bin/gosu.asc; chmod +x /usr/local/bin/gosu; gosu nobody true; apt-get purge -y --auto-remove $fetchDeps' returned a non-zero code: 2

docker-compose and docker-entrypoint-initdb.d sql import not working

Hi there,

I'm triing to populate my database with the docker-entrypoint-initdb.d directory but each time I try to compose, it's not triggered.

Here's a copy of my docker-compose.yml :

db:
  image: percona:5.6
  labels:
    io.rancher.container.pull_image: always
    io.rancher.scheduler.affinity:host_label_soft: io.blackcreeper.com.server=mysql
  volumes:
    - /var/lib/mysql
    - /private/var/www/dumps/maparfumerie:/docker-entrypoint-initdb.d
  restart: always
  environment:
    MYSQL_ROOT_PASSWORD: root
    MYSQL_DATABASE: test
    MYSQL_USER: root
    MYSQL_PASSWORD: root
magento:
  image: magextrem/php-apache:5.4
  links:
    - db
  volumes:
    - /private/var/www/html/test:/var/www/html
  environment:
    - VIRTUAL_HOST=www.test.local

The magextrem/php-apache:5.4 is a custom build.
I checked in the docker container created an the file test.sql was in /docker-entrypoint-initdb.d, so I don't understand why the database isn't populated.
I've already tried to delete both the container and the image to pull it again but without success.

I'm certainly missing something, can you help me figure out this ?

Thanks,

Kevin

custom config file can't replace all options

though I'm concerned about sql_mode , some others option are affected too

according to docs:

The Percona startup configuration is specified in the file /etc/mysql/my.cnf, and that file in turn includes any files found in the /etc/mysql/conf.d directory that end with .cnf. Settings in files in this directory will augment and/or override settings in /etc/mysql/my.cnf

but really

cat /etc/mysql/my.cnf

!includedir /etc/mysql/conf.d/                                                                                                                                                                                                         
!includedir /etc/mysql/percona-server.conf.d/

cat /etc/mysql/percona-server.conf.d/mysqld.cnf

[mysqld]                                                                                                                                                                                                                               
skip-host-cache                                                                                                                                                                                                                        
skip-name-resolve                                                                                                                                                                                                                      
user   = mysql                                                                                                                                                                                                                         
pid-file = /var/run/mysqld/mysqld.pid                                                                                                                                                                                                  
socket   = /var/run/mysqld/mysqld.sock                                                                                                                                                                                                 
port   = 3306                                                                                                                                                                                                                          
basedir    = /usr                                                                                                                                                                                                                      
datadir    = /var/lib/mysql                                                                                                                                                                                                            
tmpdir   = /tmp                                                                                                                                                                                                                        
lc-messages-dir  = /usr/share/mysql                                                                                                                                                                                                    
explicit_defaults_for_timestamp                                                                                                                                                                                                        
                                                                                                                                                                                                                                       
local-infile = 0                                                                                                                                                                                                                       
                                                                                                                                                                                                                                       
# Recommended in standard MySQL setup                                                                                                                                                                                                  
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_ALL_TABLES                                                                                                                                                                                      
                                                                                                                                                                                                                                       
# Disabling symbolic-links is recommended to prevent assorted security risks                                                                                                                                                           
symbolic-links=0

i.e. /etc/mysql/percona-server.conf.d/mysqld.cnf has higher priority over anything in /etc/mysql/conf.d/ and make harder to provide own setting (by example sql_mode)

Not sure you can mount volumes from host for MySQL data on Windows Docker

I had been using the Percona image for awhile with the following run command:

docker run -d -e APP=db -e \ 
MYSQL_ROOT_PASSWORD=pass -e MYSQL_DATABASE=db \
-e MYSQL_USERNAME=user -e MYSQL_PASSWORD=pass --name=db \
-p 3306:3306 percona:latest

Specifically note I am not using -v option.

It works, but no data is retained in the container. I figured this is due to mapping /var/lib/mysql to an endpoint expected to come from host volume.

After some experimenting with -v option to docker run command, I find the Percona container only stays running for maybe 7 seconds. Here is the relevant portion of the logs.

Initializing database
2016-12-01T20:18:09.168809Z 0 [Warning] 'NO_ZERO_DATE', 'NO_ZERO_IN_DATE' and 'ERROR_FOR_DIVISION_BY_ZERO' sql modes should be used with strict mode. They will be merged with strict mod
e in a future release.
2016-12-01T20:18:09.168846Z 0 [Warning] 'NO_AUTO_CREATE_USER' sql mode was not set.
2016-12-01T20:18:17.961137Z 0 [Warning] InnoDB: Retry attempts for writing partial data failed.
2016-12-01T20:18:17.961206Z 0 [ERROR] InnoDB: Write to file /var/lib/mysql/xb_doublewritefailed at offset 0, 1048576 bytes should have been written, only 0 were written. Operating syste
m error number 22. Check that your OS and file system support files of this size. Check also that the disk is not full or a disk quota exceeded.
2016-12-01T20:18:17.961236Z 0 [ERROR] InnoDB: Error number 22 means 'Invalid argument'
2016-12-01T20:18:17.963717Z 0 [ERROR] InnoDB: InnoDB Database creation was aborted with error Generic error. You may need to delete the ibdata1 file before trying to start up again.
2016-12-01T20:18:18.564793Z 0 [ERROR] Plugin 'InnoDB' init function returned error.
2016-12-01T20:18:18.564947Z 0 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2016-12-01T20:18:18.564978Z 0 [ERROR] Failed to initialize plugins.
2016-12-01T20:18:18.564998Z 0 [ERROR] Aborting

This leads me to wonder if there is any way to use the container as intended on Windows. I may need to build one in which the data can persist inside the container using docker commit.

Recent change to entrypoint broke startup for images that commit data

Hey there,
We have sort of an unusual use case for this image - we're building an image off of it where the data directory is committed in order to easily distribute a sanitized database for development purposes. As of 37f4f0c our images fail to start with the following error:

Fatal error: Can't open and lock privilege tables: Table storage engine for 'user' doesn't have this option

I don't understand all the details here, but my rough understanding is that the full chown was triggering copy-on-write behavior in OverlayFS that allowed MySQL to see these files as writable, and that the conditional chown doesn't have the same effect, because those files are already owned by the mysql user.

I'm not sure if this is a use case this image needs to support or not, but I wanted to raise it here because I imagine there are others affected by it.

Mysql pods are not running while deploying from helm

[root@api mysql]# oc logs mysql-mysql-569f986dd9-4w8pq
=> sourcing 20-validate-variables.sh ...
=> sourcing 25-validate-replication-variables.sh ...
=> sourcing 30-base-config.sh ...
---> 04:08:27 Processing basic MySQL configuration files ...
=> sourcing 60-replication-config.sh ...
=> sourcing 70-s2i-config.sh ...
---> 04:08:27 Processing additional arbitrary MySQL configuration provided by s2i ...
=> sourcing 10-mysql57.cnf ...
=> sourcing 40-paas.cnf ...
=> sourcing 50-my-tuning.cnf ...
---> 04:08:27 Initializing database ...
---> 04:08:27 Running /opt/rh/rh-mysql57/root/usr/libexec/mysqld --initialize --datadir=/var/lib/mysql/data --ignore-db-dir=lost+found
---> 04:08:27 Starting MySQL server with disabled networking ...
---> 04:08:27 Waiting for MySQL to start ...
mysqld: Can't change dir to '/var/lib/mysql/data/' (Errcode: 2 - No such file or directory)
2020-01-29T04:08:28.207760Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2020-01-29T04:08:28.208044Z 0 [Warning] Can't create test file /var/lib/mysql/data/mysql-mysql-569f986dd9-4w8pq.lower-test
2020-01-29T04:08:28.208147Z 0 [Note] /opt/rh/rh-mysql57/root/usr/libexec/mysqld (mysqld 5.7.24) starting as process 39 ...
2020-01-29T04:08:28.213428Z 0 [Warning] Can't create test file /var/lib/mysql/data/mysql-mysql-569f986dd9-4w8pq.lower-test
2020-01-29T04:08:28.213458Z 0 [Warning] Can't create test file /var/lib/mysql/data/mysql-mysql-569f986dd9-4w8pq.lower-test
2020-01-29T04:08:28.213523Z 0 [ERROR] failed to set datadir to /var/lib/mysql/data/
2020-01-29T04:08:28.213530Z 0 [ERROR] Aborting

2020-01-29T04:08:28.213542Z 0 [Note] Binlog end
2020-01-29T04:08:28.215534Z 0 [Note] /opt/rh/rh-mysql57/root/usr/libexec/mysqld: Shutdown complete

Percona 5.6 Docker Image cannot load my /etc/mysql/conf.d/*.cnf

I am struggling on this issue for at least 14 hours so far :(.

I am configuring a build server with docker, jenkins, java, scala on top of CentOS 7.

While working with liquibase and jooq:codegen, I need to have proper MySQL(Percona:5.6) containers setup, but unfortunately, it seems that Official Percona Image (Percona:5.6) does not load *.cnf files under /etc/mysql/conf.d properly, which I do think it is my issue, such as file permissions issues.

I posted details on http://stackoverflow.com/questions/37501725/percona-5-6-docker-image-cannot-load-my-etc-mysql-conf-d-cnf

max_allowed_packet resets to 1024 randomly

Hello,

I have five servers running percona server version 5.6.36-82.1, and I am getting a strange behavior only in the one running with docker:

The max_allowed_packet resets to 1024 randomly

After a fresh restart:

# docker exec mysql mysql -e 'SHOW GLOBAL STATUS;' | grep '^Uptime\s'
Uptime	335
# docker exec mysql mysql -e 'SHOW VARIABLES;' | grep max_allowed_packet
max_allowed_packet	33554432

After running for 2 days:

# docker exec mysql mysql -e 'SHOW GLOBAL STATUS;' | grep '^Uptime\s'
Uptime	203376
# docker exec mysql mysql -e 'SHOW VARIABLES;' | grep max_allowed_packet
max_allowed_packet	1024

Create a docker image with no volume mounts

In the dockerfile for percona there is a volume mount for persistence
VOLUME ["/var/lib/mysql", "/var/log/mysql"]

This is very good for production! But for development, I wish there was a way to NOT mount these volumes. Let me explain.

On my CI server, I create a development database image that contains MySQL data inside the container. I achieve this by forking the percona docker file and build percona my self without the volume mounts.

So when I restore my development database data to this image and push the image version to my docker hub, the data stay on the image.

In my docker compose file I map the /var/lib/mysql to local for persistence.

What I would like is this

Can you make a version of the percona image that does not mount the volumes in the Dockerfile? Let us mount the volumes when we want to? This way I can build and add DB data to the image for distribution. And then I do not have to maintain my own set of images that is more or less exactly the same as yours.

I have tried to get docker to make a docker build --no-volumes parameter or similar, but no one understands why it is needed. I guess I am very bad to explain.

Any plans to migrate to debian:stretch

Are there currently any reasons to not run percona:5.7 under stretch? Its not that it would be hard to create such an image myself - i just wonder why there is not move on the official images yet - are there any issues? Would you accept anything as PR for e.g percona:5.7-stretch ?

Thanks

chown -R mysql:mysql "$DATADIR" in docker-entrypoint.sh results in copy of datadir

Hi,

based on the article Test Databases in Docker Containers from Ethan Tuttle I'm using a modified percona image that just changes the datadir via adding a file to /etc/mysql/conf.d:

[mysqld]
datadir		= /data
innodb_tmpdir	= /data

That way I can import data in the container itself, commit the changes and then distribute a docker image that contains a pre-defined state of my database to developers. The developers can use this image and evertime they want to reset the state of the DB they just have to destroy the database docker container and create a new one based on the image I distributed to them.

So the data resides not in /var/lib/mysql (which is marked as a VOLUME) but in /data.

Problem

Upon starting a docker container based on that image, docker-entrypoint.sh runs the command chown -R mysql:mysql "$DATADIR".

Using aufs or overlay2 storage engine that chown results in a complete duplication of all files on the docker host because all the files are "changed". Even though it's just the uid and gid of all files in /data that is "changed" (it is'nt even changed: user/group was mysql:mysql before), overlay2 and aufs seems to do a COW (Copy-on-write).

I suggest to change that line to this:

find "$DATADIR" \! -user mysql -print0 | xargs -0r chown mysql
find "$DATADIR" \! -group mysql -print0 | xargs -0r chgrp mysql

This would prevent the chown on every startup and reduce startup time and disk reads/writes in cases where DATADIR is not /var/lib/mysql.

Percona container only runs the first time.

I'm on Windows 10, Docker 1.12.3 (8488) using the percona:latest image:tag.

I followed the strategy to keep the DB files on the host machine.

First time I run the container:

docker run -d -e APP=db -v /C/Users/myuser/mysql_data:/var/lib/mysql -e \
MYSQL_ROOT_PASSWORD=pass -e MYSQL_DATABASE=db \
-e MYSQL_USERNAME=user -e MYSQL_PASSWORD=pass \
--name=db -p 3306:3306 percona:latest

Awesome, up and running in a jiffy! Super excellent. IBDATA files got created in mysql_data directory as expected.

I work all day, go home and fire it up the next day, to see the container achieved Exited state only.

docker logs 

says

[ERROR] --initialize specified but the data directory has files in it. Aborting.

So, what should my docker run command look like on runs 2-N ? Or am I missing something obvious? The documentation is so great, I'm surprised I'm having any issues. Particularly this part (under Environment Variables):

if you start the container with a data directory that already contains a database: 
any pre-existing database will always be left untouched on container startup

Building version 5.6 - not found

When running docker build . inside percona/5.6 it's unable to finish due to the following error:

E: Version '5.6.22-72.0-738.wheezy' for 'percona-server-server-5.6' was not found

Max open files set to 1024

ulimit is not set on MySQL server, so they start with the default "Max open files" == 1024.

It's a problem when we try to use open_files_limit or innodb_open_files and set it to a higher limit.

EDIT
one could launch docker with --ulimit option. Maybe this could just be documented ?

xtrabackup is not included by default. Shall we?

I was trying to do a backup using the command xtrabackup but app is not installed within this offical:percona image. I was surprised as it is made by the percona team.

I think for most folks who are not DBA like me, the image shall include xtrabackup by default and add in the readme how to use this. From the container I try apt-get install percona-xtrabackup but it's failing... The default version is too old. Major pain for everyone.

How to install manually within the container

Here is how I did install the latest percona-xtrabackup-24 app. It was REALLY a pain to install, but here it his folks! Spoiler alert: it does not work via apt-get install ...

First docker exec within percona container

### DIR to build: percona-custom
### OS is a debian:jessie
### (checkout latest version here https://www.percona.com/downloads/XtraBackup/)

### To debug stuff
### docker run -dit --name perconadebug -e MYSQL_ROOT_PASSWORD=justtesting percona:5.7.16
### docker exec -it perconadebug bash
### docker rm -f perconadebug

### Do not stop on error an the error below
#set -e
DEBIAN_FRONTEND=noninteractive

### Leave a trace
cd /
touch DIRpercona-custom_BYPascal-Andy_$(date +%Y-%m-%d_%Hh%M_%S)-5H.txt

### This will be --mount
mkdir -p var/lib/bkp-mysql

cd tmp
apt-get update -y
apt-get install -qy \
	wget \
	qpress
echo Step 1 && echo && sleep 0.1



# ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ###
### Install other stuff
apt-key adv --keyserver keys.gnupg.net --recv-keys 1C4CBDCDCD2EFD2A
sh -c "echo 'deb http://repo.percona.com/apt jessie main' > /etc/apt/sources.list.d/percona.list"
sh -c "echo 'deb-src http://repo.percona.com/apt jessie main' >> /etc/apt/sources.list.d/percona.list"
### From https://www.percona.com/doc/percona-xtrabackup/2.2/installation/apt_repo.html
### http://repo.percona.com/apt/
wget https://repo.percona.com/apt/percona-release_0.1-4.jessie_all.deb && \
dpkg -i percona-release_0.1-4.jessie_all.deb
echo Step 2 && echo && sleep 4

apt-get update -y
apt-get upgrade -qy



# ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ###
### Download xtrabackup
wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.5/binary/debian/jessie/x86_64/percona-xtrabackup-24_2.4.5-1.jessie_amd64.deb
echo Step 3A && echo && sleep 4

### Install xtrabackup
dpkg -i percona-xtrabackup-24_2.4.5-1.jessie_amd64.deb
### (here is the error ...)
echo Step 3B && echo && sleep 3

### This is hacky but it works at the end. Let's fix this fu*&? up (do NOT do this: apt-get install -fy)
apt-get install -f -y
echo Step 4 && echo && sleep 3

### Install xtrabackup (again)
dpkg -i percona-xtrabackup-24_2.4.5-1.jessie_amd64.deb
### Shall be installed normally at this point
echo Step 5 && echo && sleep 0.1

### Confirm xtrabackup is installed
xtrabackup -version
which xtrabackup
echo Step 6 && echo && sleep 4




# ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ###
### Download percona-toolkit
wget https://www.percona.com/downloads/percona-toolkit/2.2.20/deb/percona-toolkit_2.2.20-1_all.deb
echo Step 7 && echo && sleep 0.1

### Install percona-toolkit
dpkg -i percona-toolkit_2.2.20-1_all.deb
echo Step 8 && echo && sleep 0.1

apt-get install -f -y
echo Step 9 && echo && sleep 0.1

### Install percona-toolkit
dpkg -i percona-toolkit_2.2.20-1_all.deb
echo Step 10 && echo && sleep 0.1

### Confirm xtrabackup is installed (http://jmp.sh/1XGylyS)
pt-stalk -version
which pt-stalk
echo Step 11 && echo && sleep 4




# ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ###
### Clean up
apt-get clean
apt-get autoremove
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
echo Step 12 && echo && sleep 0.1

Time to execute a hot backup

### backup (xtrabackup) see pdf guide - http://jmp.sh/r8540JI
xtrabackup --backup --user=root --password=fancypass \
--datadir=/var/lib/mysql/ --target-dir=/var/lib/bkp-mysql/xtrabackup-test-2016-12-16_22h17
	[...]
	161217 04:16:13 completed OK!

cd xtrabackup-test-2016-12-16_22h17
ls -lh
	total 77M
	-rw-r----- 1 root root  425 Dec 17 04:16 backup-my.cnf
	drwxr-x--- 2 root root 4.0K Dec 17 04:16 default
	drwxr-x--- 2 root root 4.0K Dec 17 04:16 g99999025
	drwxr-x--- 2 root root 4.0K Dec 17 04:16 g99999026
	-rw-r----- 1 root root  539 Dec 17 04:16 ib_buffer_pool
	-rw-r----- 1 root root  76M Dec 17 04:16 ibdata1
	drwxr-x--- 2 root root 4.0K Dec 17 04:16 mysql
	drwxr-x--- 2 root root 4.0K Dec 17 04:16 performance_schema
	drwxr-x--- 2 root root  12K Dec 17 04:16 sys
	-rw-r----- 1 root root  115 Dec 17 04:16 xtrabackup_checkpoints
	-rw-r----- 1 root root  510 Dec 17 04:16 xtrabackup_info
	-rw-r----- 1 root root 3.0K Dec 17 04:16 xtrabackup_logfile

du -sh /var/lib/bkp-mysql/xtrabackup-test-2016-12-16_22h17
	107M	/var/lib/bkp-mysql/xtrabackup-test-2016-12-16_22h17

So now we can backup using xtrabackup and mysqldump. Here is my setup:

mysqldump \
--single-transaction \
--set-gtid-purged=OFF \
--lock-for-backup \
--skip-lock-tables \
--triggers \
--events \
--routines \
--hex-blob \
--all-databases \
-uroot -pfancypass > /var/lib/bkp-mysql/test-2016-12-16_23h20.sql

(--lock-for-backup works only with percona)

This is a solid backup plan for everyone! What do you think?
IMHO: the official:percona image shall have xtrabackup and percona-toolkit installed by default. Specially considering how much painful it is oo install. Contribute to the conversation here - #38

My Dockerfile file

https://github.com/pascalandy/docker-percona-custom

Cheers!
twitter.com/_pascalandy

can mount volumes from host for MySQL data on Windows Docker

i have same problem. Percona(or mariadb or mysql) can not start.

Docker stats:
docker -v
Docker version 17.03.0-ce, build 60ccb22
docker-compose -v
docker-compose version 1.11.2, build f963d76f
docker-machine -v
docker-machine.exe version 0.10.0, build 76ed2a6

Windows 10.

docker-compose.yml

_version: '2'
services:
  db:
    image: percona:latest
    volumes:
      - ./data/db:/var/lib/mysql
    restart: always
    container_name: mysql
    environment:
      MYSQL_ROOT_PASSWORD: 1234
      MYSQL_DATABASE: db
      MYSQL_USER: db_user
      MYSQL_PASSWORD: 1234_

Docker log:

Initializing database
2017-03-22T21:00:02.880303Z 0 [Warning] 'NO_ZERO_DATE', 'NO_ZERO_IN_DATE' and 'ERROR_FOR_DIVISION_BY_ZERO' sql modes should be used with strict mode. They will be merged with strict mode in a future release.
2017-03-22T21:00:02.880349Z 0 [Warning] 'NO_AUTO_CREATE_USER' sql mode was not set.
2017-03-22T21:00:05.468269Z 0 [Warning] InnoDB: Retry attempts for writing partial data failed.
2017-03-22T21:00:05.468309Z 0 [ERROR] InnoDB: Write to file /var/lib/mysql/xb_doublewritefailed at offset 0, 1048576 bytes should have been written, only 0 were written. Operating system error number 22. Check that your OS and file system support files of this size. Check also that the disk is not full or a disk quota exceeded.
2017-03-22T21:00:05.468321Z 0 [ERROR] InnoDB: Error number 22 means 'Invalid argument'
2017-03-22T21:00:05.469852Z 0 [ERROR] InnoDB: InnoDB Database creation was aborted with error Generic error. You may need to delete the ibdata1 file before trying to start up again.
2017-03-22T21:00:06.070990Z 0 [ERROR] Plugin 'InnoDB' init function returned error.
2017-03-22T21:00:06.071021Z 0 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2017-03-22T21:00:06.071025Z 0 [ERROR] Failed to initialize plugins.
2017-03-22T21:00:06.071028Z 0 [ERROR] Aborting

It's not permissions problems because some files was created. look this screen: http://joxi.ru/n2Y05v5CxGLLm6

I think that some problems with write db files to host machine.
There are ideas for solving the problem.

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.