迁移本地PHP应用到Docker容器

作者: 左蓝 | 来源:发表于2016-02-22 22:44 被阅读1160次

    场景:在一台服务器上有一个跑在本机的LAMP服务,因为经常搬迁服务器所以传统搬迁办法非常麻烦,于是打算把这个正在运行的服务迁移到Docker容器里面,方便以后搬迁。


    任务:迁移本地PHP应用到Docker容器。


    不废话,四步之内解决这件事,备份你的网站

    第一种方法

    第一步:拉取镜像。

    docker pull tutum/lamp
    

    第二步:运行容器。

    在这次实验中,本地应用根目录为/home/wwwroot/default,请根据自己情况修改路径。YOURPASSWORD保持之前的数据库密码。

    docker run -d -p 81:80 -p 3307:3306 -e MYSQL_PASS="YOURPASSWORD" -v /home/wwwroot/default:/app tutum/lamp
    

    第三步:修改应用数据库配置文件。

    在这个镜像中,容器外部不允许使用root用户连接——你应该使用admin用户!

    修改PHP应用的配置文件里面的数据库用户名即可。

    第四步:导出本地数据库数据,然后导入容器内的数据库。

    太简单,mysql命令行导出导入而已。

    以上是第一种方法,这种方法不用动正在运行的程序,做到了无缝切换,但缺点在于不利于将来搬迁服务器时操作,毕竟本地数据还是要自己打包,总之有时间可以用第二种方法。


    第二种方法

    第一步:写个Dockerfile,自己构建一个LAMP镜像。

    打包本地数据,我命名为wwwroot.zip
    在打包文件目录中执行vim Dockerfile

    FROM tutum/lamp:latest
    RUN rm -rf /app
    ADD wwwroot.zip /app/
    RUN apt-get update
    RUN apt-get install -y unzip
    RUN cd /app && unzip wwwroot.zip
    RUN rm -rf /tmp && rm /app/wwwroot.zip
    EXPOSE 80 3306
    CMD ["/run.sh"]
    

    第二步:构建。

    docker build -t local/lamp .
    

    第三步:运行容器。

    • 首先导出数据库
    • 关闭LAMP
    • 运行容器(YOURPASSWORD保持之前的数据库密码)
    docker run -d -p 81:80 -p 3306:3306 -e MYSQL_PASS="YOURPASSWORD" local/lamp
    

    第四步:数据库配置。

    记住,容器外部不允许使用root用户连接——你应该使用admin用户!
    配置文件只需要修改一个数据库用户名即可。

    导出本地数据库数据,然后导入容器内的数据库。

    题外话

    你可能注意到暴露的是81端口,这是因为我把前端交给Nginx做反代理。

    详情:为“复杂”的容器环境配置Nginx反向代理

    相关文章

      网友评论

      • leeyi:[root@localhost ~]# docker ps
        CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
        dfbb7eaf2cfb jwilder/nginx-proxy "/app/docker-entrypoi" About an hour ago Up About an hour 0.0.0.0:80->80/tcp, 443/tcp sick_shockley
        96d4dba12f49 gogs/gogs "docker/start.sh /bin" 2 hours ago Up About an hour 3000/tcp, 0.0.0.0:3002->22/tcp gogs

        http://git.avatar56.com/ # Welcome to nginx!
        http://git.avatar56.com:3002/ # 无法访问此网站

        按照文档做了,都运行起来了,访问不了gogs哦
        leeyi:@左蓝 上我评论错地方了,但是问题还是运行不起来 . 有 -v /data/gogs:/data 就报错 没有权限创建目录
        左蓝:@leeyi 如果你之前已经裸跑了一个Gogs,只需要把原来Gogs的数据文件当成数据卷就可以迁移了。
        左蓝:@leeyi 你是运行Gogs啊,跑到PHP的文章回复?http://www.jianshu.com/p/424627516ef6 这个才是你要看的吧。

      本文标题:迁移本地PHP应用到Docker容器

      本文链接:https://www.haomeiwen.com/subject/rgovkttx.html