Docker 搭建lamp应用实例详解

 更新时间:2016年11月07日 08:59:34   投稿:lqh  
这篇文章主要介绍了Docker 搭建lamp应用实例详解的相关资料,这里对搭建 LAMP的步骤做了详细介绍,需要的朋友可以参考下

Docker 搭建lamp应用

LAMP 指的 Linux(操作系统)、ApacheHTTP 服务器,MySQL(有时也指MariaDB,数据库软件) 和 PHP(有时也是指 Perl 或 Python) 的第一个字母,一般用来建立 web 服务器。 虽然这些开放源代码程序本身并不是专门设计成同另几个程序一起工作的,但由于它们的免费和开源,这个组合开始流行(大多数Linux发行版本捆绑了这些软件)。当一起使用的时候,它们表现的像一个具有活力的解决方案包。下面介绍如何使用Docker来搭建一个包含lamp组件的容器:

从网站上 pull 一个 lamp 镜像

官方的仓里没有标 OFFICIAL 的 lamp 的镜像,不过 「tutum」的镜像做的非常好,我们可以直接 pull 他们的镜像来完成我们的操作。

core@localhost ~/base $ docker pull tutum/lamp
Pulling repository tutum/lamp
4b32789c7d66: Download complete
...

使用默认方式启动 lamp 容器

core@localhost ~/base $ docker run -d -p 8080:80 -p 3306:3306 tutum/lamp
#启动应用并映射 8080 端口和 3306 端口
0ee00c97a5cdefb985baf826c16723f333aa5edddee4072a5107c724ad09f10d
core@localhost ~/base $ docker ps
CONTAINER ID    IMAGE               COMMAND        CREATED       STATUS       PORTS                     NAMES
0ee00c97a5cd    tutum/lamp:latest         "/run.sh"       3 seconds ago    Up 2 seconds    0.0.0.0:3306->3306/tcp, 0.0.0.0:8080->80/tcp  lonely_davinci
e3c136d76b44    tutum/tomcat:8.0          "/run.sh"       45 minutes ago   Up 45 minutes    0.0.0.0:80->8080/tcp              tomcat001
fe9e65aaf58c    dl.dockerpool.com:5000/mysql:5.7  "/entrypoint.sh mysq  51 minutes ago   Up 51 minutes    3306/tcp                    db001,tomcat001/tomysql
core@localhost ~/base $ curl http://127.0.0.1:8080
#使用curl可以查看到默认的应用已经启动
<html>
<head>
    <title>Hello world!</title>
    <style>
    body {
        background-color: white;
        text-align: center;
        padding: 50px;
        font-family: "Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;
    }

    #logo {
        margin-bottom: 40px;
    }
    </style>
</head>
<body>
    <img id="logo" src="logo.png" />
    <h1>Hello world!</h1>
            <h2>MySQL Server version: 5.5.38-0ubuntu0.14.04.1</h2>
    </body>
</html>

部署自己的 PHP 应用

默认的容器启动了一个 helloword 应用,我们可以使用 dockerfile 创建另外一个镜像来部署我们自己的应用程序,dockerfile 的详细语法将在后面章节介绍。

core@localhost ~ $ mkdir php
core@localhost ~ $ cd php/
core@localhost ~/php $ touch Dockerfile
core@localhost ~/php $ vi Dockerfile
core@localhost ~/php $ docker build -t dockerpool/my-lamp-app .

Dockerfile 内容如下:

FROM tutum/lamp:latest
RUN rm -fr /app && git clone https://github.com/username/customapp.git /app
#这里替换 https://github.com/username/customapp.git 地址为你自己的项目地址
EXPOSE 80 3306
CMD ["/run.sh"]

再次启动自己的容器就完成部署了

core@localhost ~/php $ docker stop  0ee
0ee
core@localhost ~/php $ docker rm 0ee
0ee
core@localhost ~/php $ docker run -d -p 8080:80 -p 3306:3306 dockerpool/my-lamp-app

使用 curl看下自己的应用程序是不是已经正确启动了吧!

curl http://localhost/

在 php 程序中连接数据库

在容器中访问 mysql 数据库

这个镜像的 mysql 数据库有个默认的 root 用户,本地连接时可以不用密码,所以在代码访问非常简单。

<?php
$mysql = new mysqli("localhost", "root");
echo "MySQL Server info: ".$mysql->host_info;
?>

在容器外部访问 mysql 数据库

当我们第一次以 tutum/lamp 镜像启动容器的时候,它会自动创建一个叫 admin 的 mysql 用户,并生成一个随机密码,使用「docker logs +容器ID」可以获取到这个密码。

core@localhost ~/php $ docker logs 9cb
=> An empty or uninitialized MySQL volume is detected in /var/lib/mysql
=> Installing MySQL ...
=> Done!
=> Waiting for confirmation of MySQL service startup
=> Creating MySQL admin user with random password
=> Done!
========================================================================
You can now connect to this MySQL Server using:

  mysql -uadmin -p2Ijg6gvmM0N3 -h<host> -P<port>

Please remember to change the above password as soon as possible!
MySQL user 'root' has no password but only allows local connections
========================================================================

默认的 root 用户无法远程登陆,所以要使用 admin 用户,它同样具有 root 权限。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

相关文章

  • docker 查看容器的挂载目录操作

    docker 查看容器的挂载目录操作

    这篇文章主要介绍了docker 查看容器的挂载目录操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • 详解Docker之Compose服务编排

    详解Docker之Compose服务编排

    Compose是Docker的服务编排工具,主要用来构建基于Docker的复杂应用,Compose 通过一个配置文件来管理多个Docker容器,非常适合组合使用多个容器进行开发的场景。兴趣的小伙伴们可以参考一下
    2018-07-07
  • 搭建一个私有的Docker registry教程

    搭建一个私有的Docker registry教程

    这篇文章提供了一个非常务实的方法来处理搭建私有Docker registry时出现的各种错综复杂的情况。我们将会使用一个运行于DigitalOcean(之后简称为DO)的非常小巧的512MB VPS 实例
    2016-09-09
  • 如何免sudo使用docker命令详解

    如何免sudo使用docker命令详解

    有时候发现docker有的指令必须加sudo才能执行,下面这篇文章主要给大家介绍了关于如何免sudo使用docker命令的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友下面来一起看看吧。
    2017-12-12
  • 教你使用Docker搭建gitlab社区汉化版的详细过程

    教你使用Docker搭建gitlab社区汉化版的详细过程

    很多朋友不太清楚使用Docker搭建gitlab社区汉化版的过程,总是容易出现错误,今天小编抽空给大家分享使用Docker搭建gitlab社区汉化版的详细过程,一起看看吧
    2021-09-09
  • Centos 7中Docker私有仓库的搭建方法

    Centos 7中Docker私有仓库的搭建方法

    本篇文章主要介绍了Centos 7中Docker私有仓库的搭建方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • centos6使用docker部署zookeeper操作示例

    centos6使用docker部署zookeeper操作示例

    这篇文章主要介绍了centos6使用docker部署zookeeper操作,结合实例形式分析了centos6平台使用docker部署zookeeper相关命令与使用技巧,需要的朋友可以参考下
    2020-02-02
  • 使用docker部署dubbo项目的方法步骤

    使用docker部署dubbo项目的方法步骤

    这篇文章主要介绍了使用docker部署dubbo项目的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • Docker安装jenkins实现微服务多模块打包的示例代码

    Docker安装jenkins实现微服务多模块打包的示例代码

    本文主要介绍了Docker安装jenkins实现微服务多模块打包的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • docker如何部署eureka-server

    docker如何部署eureka-server

    这篇文章主要介绍了docker如何部署eureka-server问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12

最新评论