Docker LAMP 环境搭建和 Docker Compose 的使用

在安装了Docker Desktop并已经基本掌握Container构建与运行后,现在就来真正手动搭建一个LAMP环境以为开发环境服务。本篇文章将会介绍利用Docker搭建前后端隔离的LAMP环境。

See English Version

上一篇文章中安装了Docker Desktop并已经基本掌握Container构建与运行后,现在就来真正手动搭建一个LAMP环境以为开发环境服务。其实上一次我们已经成功运行了一整个Debian系统,如果只是想安装LAMP,则安装过程与真实服务器上安装无异,但是我在这里需要利用到Docker的特性来更好地为开发服务,即各个服务隔离运行,比如web服务与数据库隔离运行,当web服务因为某些原因被玩坏了以后不会影响到数据库,只需重新创建一个web服务的Container再运行就可以了。

这里我先获取了PHP的官方镜像,一般比较流行的官方镜像在Docker Hub里搜索找到。

这里官方也详细提供了如果你想要实现安装特定组合或者特定版本所需的tag以及如果需要特定方式构建所需的DockerFile,甚至右边还有pull命令使用方法。我们查看并且记下所需版本的tag。

pull与run的方式与上一次完全相同,只要在Image名称后面加上对应的tag即可。这里我们run的时候绑定一下主机和Container的目录(-v),这里把主机的目录(:之前的路径)与Container的网页存储目录绑定,这样这两个目录就是等同的了。

docker pull php:apache
docker run -d -p 80:80 -v [HOST DIRECTORY]:/var/www/html php:apache

安装完成后就可以直接看到这个web服务正在运行了,不过因为没有文件所以会显示一个错误。

同样的方法创建并运行另一个Container安装mysql。与PHP+Apache有些不一样,这里在运行Container时要指定数据库密码否则就会无法登录访问数据库。

docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=[YOUR PASSWORD] -d mysql

很方便,这两个Container就同时开始运行了,而且它们默认是在同一个网络bridge下,可以相互连接,就可以通过PHP访问数据库了。

有时候我们需要多次毁掉这两个Container并重新创建运行它们,这样一句一句创建显然是有些麻烦了。这个时候就有个很强大的东西Docker Compose,可以配置好运行时的各种条件,使多个Container同时创建并运行。介绍可以在官方文档中看到,具体的使用文档在这里

于是我撰写好了这个docker-compose.yml文件,放在一个准备好的目录下。可见语法其实和run命令是差不多的,稍微改一下写法即可。

services:
    web:
        image: php:apache
        ports:
          - "80:80"
        volumes:
          - ./test:/var/www/html
    database:
        image: mysql:latest
        ports:
          - "3306:3306"
        command: --default-authentication-plugin=mysql_native_password
        environment:
          MYSQL_ROOT_PASSWORD: mysql

写完之后在该目录下运行以下命令就可以了,十分生动形象:

cd [DIRECTORY]
docker-compose up

可见这两个Container就开始正常运行了。

以后若是想初始化这整个组合只要再Compose一下就可以了,十分方便快捷。

到这里为止Docker的环境部署就十分完美了,在绑定的主机目录加入相应网页即可通过localhost访问。

留下评论