Docker-Compose 入门教程:如何快速搭建 LNMP 环境

阅读时长 5 分钟读完

前言

在进行前端项目开发、维护以及部署时,通常需要使用到各类开源软件组件,如数据库、Web 服务器等。然而,这些软件组件的部署和配置所需的时间和精力却充满了烦恼。同时,由于不同的软件组件之间涉及到极其复杂的依赖关系,因此很容易出现运行错误和版本不兼容等问题。这时候,Docker-Compose就成了前端程序员的一大福音。

Docker-Compose 是 Docker 的一个工具,用于定义和运行多个 Docker 容器的应用程序。使用 Docker-Compose,你可以轻松地同时启动多个服务,并且它们之间的通讯关系都已经预先设置好了。本文将介绍 Docker-Compose 的常用方法,以及如何快速搭建 LNMP 环境。

前置条件

在开始使用 Docker-Compose 搭建 LNMP 环境之前,需要首先完成以下几个步骤:

  1. 安装 Docker-Compose。
  2. 准备好一个基本的 LNMP 代码仓库,其中包含 Nginx 服务器、PHP 应用程序和 MySQL 数据库的配置文件。

安装 Docker-Compose

Docker-Compose 是 Docker 的一个工具,它不随 Docker 自动打包在一起。因此,我们需要手动安装 Docker-Compose。

步骤1: 在终端中输入以下命令,下载最新版的 Docker-Compose:

步骤2: 授予执行权限:

步骤3: 测试是否安装成功:

如果你看到了以下输出,就表明 Docker-Compose 已经安装并准备就绪了:

搭建 LNMP 环境

我们将使用 Docker-Compose 快速搭建 LNMP 环境(Linux + Nginx + MySQL + PHP)。其中,Linux 镜像我们将使用最基本的 alpine 镜像,可自行更换其它 Linux 镜像。

步骤1: 在仓库项目的根目录下新建一个 docker-compose.yml 文件,用于定义镜像、服务、容器的各种配置参数。如下:

-- -------------------- ---- -------
-------- ---
---------
  ----
    ------ -
    ------
      - ---------
    --------
      - -------------------
      - --------------------------------------
      - -----------------------------------------------
    ------
      - --
  ---
    ------ ---------
    --------
      - -------------------
    ------------
      -------------------- ----
      --------------- --
      ----------- ------
      --------------- ----------

这里,我们定义了两个服务:web 和 db。

服务 web:

  • 使用当前目录的 Dockerfile 建立镜像(build: .)。
  • 将镜像的 80 端口映射到宿主机的 8080 端口(ports: - “8080:80”)。
  • 分别挂载目录 ./web,以及 ./web/nginx.conf、./web/php.ini 到镜像中。
  • 将此服务关联到 db 服务(links: - db)。

服务 db:

  • 使用官方 mysql:5.7 镜像。
  • 挂载目录 ./db 到镜像中,用于数据持久化。
  • 设置数据库 root 用户的密码、数据库名、用户名和密码。

步骤2: 运行以下命令,来启动所有定义的服务:

然后,终端将会显示一系列日志信息,告诉你各种服务的输出信息。

Ansible 详细指南

执行 Ansible 命令

更新指定节点的 DNS

在所有节点上安装 nginx

总结

通过本文的介绍,你已经学会了如何使用 Docker-Compose 快速搭建 LNMP 环境,并且也学习了 Ansible 的基本用法。这种方式不仅可以让你保存时间和精力,还可以极大地方便了多服务环境之间的交互挂载,繁琐的依赖关系处理也变得异常容易起来。所以,学习 Docker-Compose 搭建环境已成为现代 IT 从业者必不可少的技能之一。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6466eac1968c7c53b0755009

纠错
反馈