本文基于Ubuntu搭建一个本地博客系统
1. ubuntu下安装wordpress和mysql容器
安装docker
$ sudo apt-get install docker.io
下载mysql和wordpress的docker镜像
$ docker pull mysql:latest
$ docker pull mysql:latest
2. 启动mysql
2.1. 最简单的启动
$ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:latest
- some-mysql设置你要启动的容器的名字
- my-secret-pw设置root的密码
2.2. 如果考虑使用用户自定义的配置文件
$ docker run --name some-mysql -v /my/custom:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:latest
- /my/custom用于存放用户自定义的配置文件
2.3. 环境变量
当启动一个mysql的image的时候,可以通过环境变量来传递一些配置参数给容器
- MYSQL_ROOT_PASSWORD
这个变量是必须的,用来设定MYSQL的root用户的密码 - MYSQL_DATABASE
可选的,指定要创建的数据库的名字。如果提供了用户名和密码就可以获取数据库文件的超级权限 - MYSQL_USER, MYSQL_PASSWORD
可选的,创建一个新的用户 - MYSQL_ALLOW_EMPTY_PASSWORD
可选的,如果设置成yes,就允许container启动的时候不设置root用户密码 - MYSQL_RANDOM_ROOT_PASSWORD
可选的,设置成yes的时候会为root用户生成一个随机的初始化密码。生成的密码会打印出来。 - MYSQL_ONETIME_PASSWORD
第一次启动的时候设定一个初始密码,后面再访问mysql的时候强制设置密码
2.4. 安全性
通过环境变量传递敏感信息(比如说密码)的时候其实是有风险的,这个时候在之前的环境变量后面添加_FILE,这个时候就会从文件里面去load一个变量。举例来说,
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD_FILE=/run/secrets/mysql-root -d mysql:latest
2.5. 数据保存到哪里
$ docker run --name some-mysql -v /my/own/datadir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
这里通过-v把host上的文件夹/my/own/datadir映射到容器内的用于存放数据库文件的位置,这样数据库文件就会直接写到host文件系统里面。
当使用一个原有的数据库文件启动mysql容器的时候,可以直接通过上述方法把目录映射到存放数据库文件的目录,然后可以省略root密码设置的环境变量
2.6. 怎样创建一个数据库的dump
$ docker exec some-mysql sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /some/path/on/your/host/all-databases.sql
mysql的详细配置文档
https://hub.docker.com/r/library/mysql/
3. 启动wordpress
docker run --name some-wordpress --link some-mysql:mysql -p 8080:80 -d wordpress
- some-wordpress设置你要启动的容器的名字
- some-mysql是之前设置mysql的容器名
这里wordpress的container把端口80映射到主机的8080端口了,通过访问http://localhost:8080就可以访问这个wordpress容器提供的服务了。