在 AWS EC2 实例内安装 Docker 和其它依赖项

我们需要在 EC2 实例中安装三个非常重要的应用程序。首先,我们需要 AWS CodeDeploy 代理,然后我们需要安装 Dockerdocker-compose,以便构建和运行我们的应用程序所需的 Docker 容器。

连接到 EC2 实例

在安装任何东西之前,我们需要进入实例。值得庆幸的是,我们可以通过浏览器使用 AWS 控制台来完成此操作:

  1. 在 EC2 仪表板中,选择我们之前创建的正在运行的实例,然后单击表顶部的 “连接” 按钮:

    image 2023 10 24 17 26 42 236
    Figure 1. Figure 10.24 – EC2 table – the Connect button

    您将被重定向到连接到实例页面。

  2. 单击该页面上的 “连接” 按钮。最后,您将被重定向到浏览器的终端窗口:

image 2023 10 24 17 28 59 592
Figure 2. Figure 10.25 – EC2 terminal window

现在,我们可以安装 CD 所需的应用程序和 PHP 解决方案。

安装 CodeDeploy 代理

我们在本章前面创建的 CodeDeploy 应用程序需要在 EC2 实例中安装其他软件,以便与 EC2 实例通信。这就是我们需要 CodeDeploy Agent 的原因。您可以在 CodeDeploy Agent 的 AWS 官方文档页面上阅读更多相关信息: https://docs.aws.amazon.com/codedeploy/latest/userguide/codedeploy-agent.html

请按照以下步骤安装 CodeDeploy Agent:

  1. 在终端中输入以下命令安装代理:

    sudo yum update -y
    sudo yum install -y ruby
    sudo yum install -y wget
    wget https://aws-codedeploy-ap-southeast-2.s3.apsoutheast-2.amazonaws.com/latest/install
    chmod +x ./install
    sudo ./install auto
  2. 运行这些命令后,运行以下命令验证代理是否正在运行:

sudo service codedeploy-agent status

现在应该会得到以下结果:

image 2023 10 24 17 31 46 337
Figure 3. Figure 10.26 – CodeDeploy Agent is running

我们的 EC2 实例现在可以由我们的 CodeDeploy 应用程序使用。接下来,我们可以继续安装 Docker

安装 Docker

我们一直在使用 Docker 容器来运行我们的 PHP 解决方案。现在,CodeDeploy 将尝试在我们刚刚创建的 EC2 实例中部署我们的代码,但我们的解决方案代码依赖于安装的 Dockerdocker-compose

请按照以下步骤安装 Docker

  1. 在 AWS 终端窗口中运行以下命令:

    sudo amazon-linux-extras install -y docker
    sudo service docker start
    sudo usermod -aG docker ec2-user
    sudo chkconfig docker on
  2. 运行安装命令后,通过以下命令检查 Docker 是否安装正确:

    docker --version

    您应该看到以下结果:

    image 2023 10 24 17 34 54 753
    Figure 4. Figure 10.27 – Docker installed
  3. 接下来,我们需要重新启动实例以确保我们可以使用正确的权限执行 Docker。 运行以下命令:

    sudo reboot
  4. 运行命令后,终端窗口将挂起。等待几分钟,然后再次连接到 EC2 门户,就像我们之前所做的那样:

    image 2023 10 24 17 36 12 831
    Figure 5. Figure 10.28 – Terminal error while rebooting

如果您看到上述错误消息,请不要担心。只需等待几分钟,然后再次尝试连接。

最后,我们需要安装 docker-compose

安装 docker-compose

我们一直在使用 docker-compose 工具在本地开发环境中运行和配置我们的多容器设置。我们还需要在 EC2 实例中安装该工具。请按照以下步骤操作:

  1. 回到 AWS 终端窗口,运行以下命令:

    sudo curl -L "https://github.com/docker/compose/releases/download/v2.11.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    sudo chmod +x /usr/local/bin/docker-compose
  2. 运行这两个命令后,为了确保 docker-compose 已正确安装,请运行以下命令:

    docker-compose --version

您应该能看到已安装的版本。好极了!至此,我们已经安装了 CodeDeploy 在 EC2 实例中部署 PHP 应用程序所需的一切。

接下来,我们将为 EC2 实例添加一个弹性 IP。

将弹性 IP 附加到 EC2 实例

为了使我们的 EC2 实例能通过网络浏览器轻松访问,我们将为 EC2 实例添加一个 AWS 弹性 IP。需要时,我们还可以轻松地将此弹性 IP 附加到另一个 EC2 实例。

要创建弹性 IP,请按照以下步骤操作:

  1. 返回 AWS 控制台中的 EC2 仪表板,然后单击 弹性 IP 按钮:

    image 2023 10 24 17 40 48 971
    Figure 6. Figure 10.29 – The Elastic IPs button
  2. 在下一个屏幕上,选择公共 Ipv4 地址池部分中的 Amazon Ipv4 地址池单选按钮。然后,单击分配按钮:

    image 2023 10 24 17 41 36 817
    Figure 7. Figure 10.30 – Allocate Elastic IP address
  3. 接下来,单击新创建的弹性 IP 地址,然后单击关联弹性 IP 地址按钮:

    image 2023 10 24 17 42 08 125
    Figure 8. Figure 10.31 – The Associate Elastic IP address button
  4. 在下一个屏幕的实例字段中,选择我们之前创建的 EC2 实例。然后,单击 “关联” 按钮:

    image 2023 10 24 17 42 55 526
    Figure 9. Figure 10.32 – Associating the Elastic IP address with the EC2 instance

    在此阶段,我们将有一个指向我们的 EC2 实例的永久 IP 地址。 一旦我们将 PHP 应用程序部署到 EC2 实例中,我们将使用此 IP 来访问 Web 应用程序。

接下来,我们需要配置 Bitbucket Pipelines 以告诉它我们要使用 AWS CodeDeploy 自动部署我们的代码。