配置docker容器的LAMP环境~入门版~
你好。
我是Mandai,负责Wild 开发团队。
docker容器最初并不是完全运行在一个docker容器中,而是
多个docker容器协同工作来运行单个服务。
首先,我想创建一个 Web 系统,其中一台服务器中的两个 docker 容器可以协同工作。
本文是 Docker 入门系列的第 4 部分,将帮助您了解 Docker 的基础知识。
如果您想阅读过去的 Docker 介绍系列,请点击下面的链接。
- 彬彬有礼的! 通过复制粘贴介绍docker
- 彬彬有礼的! 通过复制粘贴介绍docker~Dockerfile和docker build版~
- 尝试各种PHP执行环境! 2016年将由Docker协调决定!
这次的目标
这次,我们将继续使用 docker 构建原始 LAMP 配置的目标。
为了解释什么是原始 LAMP 配置,我想到的是:
- 一个运行apache+PHP的docker容器
- 一个运行 MySQL 的 docker 容器
- 连接单独的容器并像在本地安装一样运行。
- 从虚拟机外部看,它看起来就像一个普通的 Web 系统。
我正在想象这样的情况。
以此
- 您可以学习如何启动多个容器(虽然不是那么好)
- 了解如何连接容器
- 这突然让我想到将容器放在单独的服务器上可能是可以的。
我想知道这样的事情会很高兴。
我认为尝试使用 WordPress 安装它并使其正常工作是一个好主意。
这次,我们也将在 VirtualBox 中继续进行 Ubuntu 上的工作。
准备必要的docker镜像
这次需要的docker镜像是
- MySQL docker 镜像
- Apache + PHP docker 镜像
有两个。
前者使用官方的 MySQL docker 镜像,后者使用WordPress 的官方 docker 镜像
现在,从 docker hub 拉取 MySQL docker 镜像并启动 docker 容器。
vagrant@vagrant:~$ docker run --name mymysql -e MYSQL_ROOT_PASSWORD=[mysql 密码] -d mysql:latest 无法在本地最新找到镜像 'mysql:latest': 从库/mysql 拉取 86e6c3163927: 拉取完成 68f4b3625ea4: 拉取完成04f7e78a2c8a:拉取完成 1bade56c3b6b:拉取完成 dd6387e14c18:拉取完成 ca30c0626c9b:拉取完成 0dc5e226a795:拉取完成 6c164b0f04cb:拉取完成 5c74d058f7b5:拉取完成 0fd3b6e12567:拉取完成e8126a9d061e:拉取完成 d17cffff8039:拉取完成 1924f4186d05:拉取完成 14961e5db73a:拉取完成 摘要: sha256:16de02081c408c41361126aaa718f91693688d39a216a74ac8dab841db050228状态:下载了mysql的新映像:最新12cb7271b424e8043d7bb36484061f49331a87be2 5bcd 415e4a9a481a6b33c53
让我们检查一下 docker 容器是否启动。
vagrant@vagrant:~$ docker ps 容器 ID 图像命令创建状态端口名称 12cb7271b424 mysql:latest "/entrypoint.sh mysql" 3 秒前 Up 3 秒 3306/tcp mymysql
开始一切顺利。
接下来,拉取包含 wordpress 的 docker 镜像并启动 docker 容器。
vagrant@vagrant:~$ docker run --name mywordpress --link mymysql:mysql -p 8080:80 -d wordpress 无法在本地最新找到图像 'wordpress:latest': 从库/wordpress 拉取 9482852a6953: 拉取完成 81de90fd7f09: 拉取完成 57ae0639bf23:拉出完成 c4f7968ac19e:拉出完成 d06608e0df69:拉出完成 7ab219b6a3ea:拉出完成 049be7b00a71:拉出完成 1ac57811ebb0:拉出完成 5f7f35d35a61:拉出完成 e7ff06ab86e9:拉出完成 50cbe 3cba4bd:拉取完成 ef9f3544f906:拉取完成 0544870563ee:拉取完成 6b7e8b5d0ef6:拉取完成4fb33229649f:拉取完成 d0cabc0feb31:拉取完成 6fb545ed9179:拉取完成 9e9f602b9253:拉取完成 8d3522c82327:拉取完成 26c9007116c8:拉取完成 19faf318b397:拉取完成 04c297e0e874:拉取完成 0b9e66c139d 3:拉取完成 52cddd72d1ca:拉取完成 19d7bfb3a2a7:拉取完成 15031c83aa88:拉取完成 9c3238040649 :拉取完成 492d7fea8944:拉取完成 676505bb515e:拉取完成 eea959e50c85:拉取完成 1029747e7634:拉取完成 155de5677313:拉取完成 摘要:sha256:bfd7e102741d73cce4ec58b2d937586c670f3 1df 1c80aeaf4d5c525eb3c6ac06 状态:已下载 WordPress 的较新映像:最新 8606df07f39f2a22dbdefd916b42c1747ca1df86f4a012620862c039d110887f
完成后,检查 docker 容器是否正在运行。
vagrant@vagrant:~$ docker ps 容器 ID 图像命令创建状态端口名称 8606df07f39f wordpress "/entrypoint.sh apach" 3 秒前 3 秒前 0.0.0.0:8080->80/tcp mywordpress 12cb7271b424 mysql:latest "/entrypoint.sh apach" sh mysql" 2 分钟前 Up 2 分钟 3306/tcp mymysql
必要项目的安装现已完成。
wordpress docker 镜像不包含 MySQL,但正如我在 docker hub 上阅读的解释
- 如果通过添加选项“--link mymysql:mysql”来安装它,它似乎是使用名为 mymysql 的 docker 容器设置为 MySQL 容器。
- WORDPRESS_DB_HOST 的默认值未指定,因为它使用链接的 mysql 容器。
- WORDPRESS_DB_USER 未指定,因为 mymysql 容器暂时将以 root 用户身份访问(建议更改)。
- 如果不指定 WORDPRESS_DB_PASSWORD ,将从 mysql 容器中获取启动连接的 mysql 容器时设置的 MYSQL_ROOT_PASSWORD 变量,因此无需再次指定(推荐)。
- WORDPRESS_DB_NAME 的默认值为 wordpress。如果您更喜欢其他数据库名称,请注明。
如果你控制了这个区域,似乎你可以跨容器连接到数据库,没有任何问题。
从浏览器设置 WordPress
让我们从浏览器中再次查看 WordPress 安装屏幕。
由于我在虚拟机上的 Ubuntu 上运行 docker,因此我在 Vagrantfile 中编写了以下内容,将主机 PC 上的端口 18080 端口转发到虚拟机上的端口 8080。
config.vm.network“转发端口”,访客:8080,主机:18080
VM的8080端口转发到wordpress docker容器的80端口,因此18080连接到docker容器的80端口。
当我访问 http://localhost:18080/ 时,显示了一个设置屏幕。
选择日语作为语言,然后按继续。
输入登录所需的信息
完全的。哦,这很容易。
接下来,将出现一个登录表单,因此请输入您之前输入的用户名和密码。
我到达了仪表板。
很快就结束了,但是如果您使用 Rails 等正确创建了一个 Web 服务,如果您通过在 Dockerfile 中包含 git clone 和 rake 命令来创建 docker 映像,则可以使用相同的模式来部署它,这太棒了。
此外,您可以通过简单地指定IP地址来更改AWS RDS对数据库的使用,并且很容易安排诸如放置nginx docker容器之类的事情。
这完全取决于您如何链接 docker 容器。
就是这样。