docker-images/pluie/alpine-mysql/README.md

140 lines
3.9 KiB
Markdown
Raw Normal View History

2016-07-28 13:26:22 +00:00
# pluie/alpine-mysql
- [index][1]
2016-08-09 02:06:36 +00:00
- [pluie/alpine][2] ( < 10 MB ) Alpine/3.4
- [pluie/alpine-apache][3] ( ~ 50 MB ) Apache/2.4.23 Php/5.6.24
2016-08-12 02:06:57 +00:00
- [pluie/alpine-apache-fpm][7] ( ~ 50 MB ) Apache/2.4.23 Php/5.6.24 Fpm
2016-08-13 19:43:47 +00:00
- [pluie/alpine-symfony][6] ( ~ 82 MB ) Symfony2.8 or 3.1
2017-01-29 22:44:52 +00:00
- [pluie/alpine-apache-php7][8] ( ~ 50 MB ) Apache/2.4.25 Php/7.0.15
2017-01-30 01:58:46 +00:00
- [pluie/alpine-symfony-php7][9] ( ~ 82 MB ) Symfony2.8 or 3.2 Php/7.0.15
- [pluie/alpine-mysql][4] ( ~172 MB ) Mysql/5.5.47 ( MariaDB )
- [docker tips][5]
2016-07-28 13:26:22 +00:00
2016-08-13 19:43:47 +00:00
Extend pluie/alpine with mysql (MariaDb/10.1.14)
Project comes with various scripts to execute basic tasks such as :
- dbcreate
- dbdump
- dbload
If database directory is empty a root user is created at startup.
Root access to database is only permit on localhost
2016-07-28 13:26:22 +00:00
2016-07-28 15:46:03 +00:00
## Image Size
2016-07-28 13:26:22 +00:00
2016-07-29 13:25:39 +00:00
- image ~ 172 MB
2016-07-28 13:26:22 +00:00
2016-07-28 15:46:03 +00:00
## Image Volumes
2016-07-28 13:26:22 +00:00
```
/var/lib/mysql # mysql database directory
/dump # directory to store various mysql scripts
```
2016-07-28 13:26:22 +00:00
2016-07-28 15:46:03 +00:00
## ENV variables
2016-07-28 13:26:22 +00:00
```
MYSQL_DATABASE # create specified database at startup
MYSQL_USER # create specified user at startup (and grant all rights to MYSQL_DATABASE)
MYSQL_PASSWORD
MYSQL_ROOT_PASSWORD # don't really need it. a random root password is generated if none
```
2016-07-28 13:26:22 +00:00
### Inherit ENV variables
```
SHENV_CTX=LOCAL # LOCAL|INT|PROD change context bg color
SHENV_NAME=Mysql # container name
SHENV_COLOR=97 # ANSI EXTENDED COLOR CODE
```
2016-07-28 13:26:22 +00:00
2016-07-28 15:46:03 +00:00
## Image Usage
2016-07-28 13:26:22 +00:00
for example to start a new project :
2016-07-28 13:26:22 +00:00
```
$ cd /home/docker;
$ mkdir -p db/{mysql,dump}
$ docker run --name mysql \
-v $(pwd)/db/mysql:/var/lib/mysql \
-v $(pwd)/db/dump:/dump \
-e MYSQL_DATABASE=mybase \
-e MYSQL_USER=dev \
-e MYSQL_PASSWORD=mysql \
-it pluie/alpine-mysql
2016-07-28 13:26:22 +00:00
```
you don't need to expose your localhost mysql port.
for example :
2016-07-28 13:26:22 +00:00
```
$ docker run --name pma -p 8080:80 --link mysql:db -d phpmyadmin/phpmyadmin
```
and phpmyadmin is accessible via http://localhost:8080/ and linked to your mysql container
### Existing Scripts
2016-07-28 13:26:22 +00:00
create a new database with full rights to a user :
2016-07-28 13:26:22 +00:00
```
$ docker exec -it mysql /dbcreate mydbname myuser
2016-07-28 13:26:22 +00:00
```
load an export file in particular database :
2016-07-28 13:26:22 +00:00
```
$ docker exec -it mysql /dbload mydbname /dump/mydbname.init.sql
2016-07-28 13:26:22 +00:00
```
dump a database :
2016-07-28 13:26:22 +00:00
```
$ docker exec -it mysql /dbdump mydbname
2016-07-28 13:26:22 +00:00
```
### More specific actions as user
2016-07-28 13:26:22 +00:00
to connect to the mysql server as user from host :
2016-07-28 13:26:22 +00:00
```
mysql -h ipmysqlcontainer -udev -pmysql
```
to retriew container ip you can run first :
2016-07-28 13:26:22 +00:00
```
docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' mysql
2016-07-28 13:26:22 +00:00
```
to connect to the mysql server as user from container :
```
$ docker exec -it mysql "mysql -udev -pmysql"
```
### More specific actions as root
to connect to the mysql server as root :
```
$ docker exec -it mysql "mysql -uroot"
```
to connect to the mysql container as root :
```
docker exec -it mysql bash
```
then
```
$ mysql -uroot mybase < /dump/init.mybase.sql
$ mysqldump -uroot mybase > /dump/last.mybase.dump.sql
```
etc.
2016-07-28 13:26:22 +00:00
2016-07-28 15:46:03 +00:00
## Link Container
2016-07-28 13:26:22 +00:00
to link this container to another, use the default docker behavior
(as the example provide with phpmyadmin) :
2016-07-28 13:26:22 +00:00
```
docker run --name mycontainer --link mysql:db ...
```
[1]: https://github.com/pluie-org/docker-images
[2]: https://github.com/pluie-org/docker-images/tree/master/pluie/alpine
2016-08-13 19:43:47 +00:00
[3]: https://github.com/pluie-org/docker-images/tree/master/pluie/alpine-apache
[4]: https://github.com/pluie-org/docker-images/tree/master/pluie/alpine-mysql
2016-08-12 02:06:57 +00:00
[7]: https://github.com/pluie-org/docker-images/tree/master/pluie/alpine-apache-fpm
[5]: https://github.com/pluie-org/docker-images/blob/master/DOCKER.md
2016-08-09 01:08:26 +00:00
[6]: https://github.com/pluie-org/docker-images/tree/master/pluie/alpine-symfony
2017-01-30 01:58:46 +00:00
[8]: https://github.com/pluie-org/docker-images/tree/master/pluie/alpine-apache-php7
[9]: https://github.com/pluie-org/docker-images/tree/master/pluie/alpine-symfony-php7