docker数据库文件持久化
- 在主机中创建保存数据库文件的目录
mkdir ~/web_data
- 启动
mysql
容器
docker run -p 33060:3306 -e mysqld -e MYSQL_ROOT_PASSWORD=admin -v ~/web_data/:/var/lib/mysql --name mysql_server -it mysql /bin/bash
The -v /my/own/datadir:/var/lib/mysql part of the command mounts the /my/own/datadir directory from the underlying host system as /var/lib/mysql inside the container, where MySQL by default will write its data files.
参数说明:
-p 33060:3306
:将容器的33060端口映射到主机的3306端口;
-v ~/web_data/:/var/lib/mysql
:将主机当前目录下挂载到容器目录;
-e MYSQL_ROOT_PASSWORD=admin
:初始化root用户的密码;
--name
mysql_server 给容器命名;
通过
ctrl + p
,ctrl + q
离开容器,并保持容器后台运行通过
docker attach container_ID
进入正在运行的容器
官方文档:/mysql/”>https://hub.docker.com//mysql/
- 启动mysql服务
service mysql start
- 尝试远程登录mysql服务器
mysql -h host_ip -u root -p
- 登入本地mysql数据库
mysql -uroot -p
- 添加访问用户并修改服务器登录权限
use mysql;
GRANT ALL PRIVILEGES ON *.* TO 'web_user'@'%' IDENTIFIED BY 'admin' WITH GRANT OPTION;
- 刷新缓存
flush privileges;
- 查看数据库用户是否更好成功,host项为%
use mysql;
select host, user from user;
- 退出数据库,以远程用户创建数据库或者导入数据库文件:
create database thinkcmf.sql;
use thinkcmf;
source /var/lib/mysql/thinkcmf.sql;
docker的web客户端配置
- 启动apache+mysql+php容器
docker run -p 800:80 -v ~/epcc:/var/www/example.com/public_html --link=mysql_server:mysql_server --name=web_client -t -i linode/lamp /bin/bash
- 通过环境变量
env
检查是否link成功
env
如果有输出以 MYSQL_SERVER_
作为前缀的变量,则成功
- 安装必要的php拓展,参考出处https://blog.csdn.net/MasonQAQ/article/details/78048112
apt-get update
apt-get install php5-mysql
apt-get install php5-gd
- 开启apache服务
service apache2 start
开启url转发
- 将
/etc/apache2/apache2.conf
文件中所有的AllowOverride None
改为AllowOverride All
并保存 - 在项目根目录下添加.htaccess文件,修改rewrite规则,也就是thinkphp下的.htaccess
<IfModule mod_rewrite.c>
RewriteEngine on
#不显示index.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>
-linux 系统还需要一步
sudo a2enmod rewrite
- 重启apache服务后生效
service apache2 restart