服务器上程序越来越多,它们的命令都是啥来着?
在公司学习了Docker,发现它对不会背命令的人非常友好。
emmm,把程序丢到Docker上!

迁移全过程

(22:00)-开始

  • 文件备份 ->完成!
  • 数据库备份->完成!
  • ssl证书备份->完成!
  • nginx规则备份->完成!

万事俱备,准备迁移博客。

(22:30)-拜拜!CentOS

  • 云后台登录
  • 更换操作系统
  • Ubuntu 16.04 x64
  • 完成

几秒钟,独一无二的镜像消失在了这个世界上。CentOS,再见。

(22:40)-你好呀,Docker和小伙伴们

emmmm,1点前应该能睡觉吧。

像这样安装Docker-CE。

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"
$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io
$ sudo gpasswd -a ${USER} docker
# link: https://docs.docker.com/install/linux/docker-ce/ubuntu/

添加了官方仓库,并且装好最新了的docker-ce。

装上最新的docker-compose!

$ curl -L https://github.com/docker/compose/releases/download/1.25.0-rc1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
$ chmod +x /usr/local/bin/docker-compose
$ sudo reboot
$ docker-compose -v

装上实用的Docker面板

$ docker volume create portainer_data
$ docker run -d -p 外部端口:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer
# 浏览器访问 ip:外部端口

(23:25)-漫无止境的上传

新机是没有FTPServer的!
WinSCP终于连接上了!
上传速度真慢,转啊转啊。
文件备份里还有上个月的文件备份???

  • 文件备份上传&unzip ->完成!
  • ssl证书上传->完成!

(00:50)-请出大神的DNMP

DNMP是yeszao大神做的Docker LNMP一键安装包。

$ git clone https://github.com/yeszao/dnmp.git

# 修改配置文件!PHP,MySql,Nginx[证书,规则,目录,PHP版本] 
# https://github.com/yeszao/dnmp#2%E5%BF%AB%E9%80%9F%E4%BD%BF%E7%94%A8
$ cd dnmp
$ cp env.sample .env
$ cp docker-compose-sample.yml docker-compose.yml
$ docker-compose up

(01:40)-宝贵的数据恢复

快两点了!?

DNMP自带phpMyAadmin。

  • 建立数据库,恢复备份数据 ->完成!
  • 建立WP需要的数据库账号 ->完成!
  • 写段PHP测试一下 ->完成!
  • 修改wp-config.php ->完成!
    注意db_server地址:mysql

(2:00)-网站打不开了

好困,泡杯浓咖啡。

浏览器地址栏->www.azimiao.com->回车,一气呵成!
500错误! ???

nginx日志:

#nginx error log
PHP:Call to undefined function mysql_connect() 

WordPress在php7.2上不应该调用mysqli么?
嗯,容器没装mysqli扩展。

docker ps
# 上文找到了 php72 容器id 3584bcd6a026
docker exec 3584bcd6a026 docker-php-ext-install mysqli
docker restart 3584bcd6a026

ojbk!地址栏->www.azimiao.com->回车,一气呵成!
建立数据库连接时出错???

找Bug……
第二杯咖啡……
找Bug……

删掉wp-config.php让wp自己生成就好了?!

wp没权限建立文件?手动复制!

访问成功!

(2:50)-WP没有权限上传文件?

创建/2019/04/a.png失败,上级目录没有写入权限

进入php容器

$ ls -l www

所有者uid 1000 ?

$ ps
# php user www-data
$ chown -R www-data www

上传成功

(3:45)-封闭无用端口与服务

好困,撑不住了。
操作中………………
操作中………………
操作中………………
完成。

常见问题记录

  1. docker宿主机与容器主机映射卷文件权限不统一
    使用docker run 命令运行容器时,可以通过user参数指定运行用户(uid)和组(uid),和主机一样即可。
    至于docker-compose,yml里试着添加user参数,打包完成,但容器运行秒挂。

  2. mysql的地址在哪
    容器每次重启,内部ip可能发生变化。
    DNMP内可以填mysql,或者修改配置文件,固定Mysql容器IP。

我来吐槽

*

*

2位绅士参与评论

  1. 醉开水06-17 19:46 (3天前)回复

    居然挂广告 差评

  2. Ryoma06-09 11:31 回复

    为什么要换系统那?