Docker快速入门-第14章 Docker实战应用
🐳 Docker实战应用
📖 项目概要
整体Docker实战应用的Web应用项目概要包括以下几个步骤:
创建项目:使用 Vue CLI 创建一个 Vue 项目,在页面上编写一个前端接口请求。
构建资源:基于 Nginx Docker 镜像构建成一个前端工程镜像,然后基于该前端工程镜像,启动一个容器 vue nginx container。
启动容器:启动一个基于 Node 镜像的容器 node web server,提供后端接口。
修改配置:修改 vue nginx container 的 Nginx 配置,使前端页面的接口请求转发到 node web server 上。
🛠️ 创建 Web 应用
创建 Web 应用 的具体步骤将在后续部分进行详细介绍。
🏗️ 构建 Web 镜像
首先,对 Vue 项目进行构建:
bash
Copy
yarn build
或
bash
Copy
npm run build
此时,工程根目录下将多出一个 dist 文件夹。
📡 创建接口服务
接下来,将部署一个 Node 的容器来提供接口服务。为了简单起见,使用 Node.js Web 框架 Express 来编写一个服务,注册一个返回 JSON 数据格式的路由 app.js:
javascript
Copy
‘use strict’;
const express = require(‘express’);
const PORT = 8080;
const HOST = ‘0.0.0.0’;
const app = express();
app.get(‘/’, (req, res) => {
res.send(‘Hello world\n’);
});
🛠️ 构建 Server 镜像
获取 Node 镜像:
bash
Copy
docker pull node
🔄 跨域转发请求
为了将 vueApp 容器上的请求转发到 nodeserver 容器上,首先需要知道 nodeserver 容器的 IP 地址 和 端口。目前已知 nodeserver 容器内部服务监听在 8080 端口,还需要知道 IP 地址。
查看容器内部 IP 可以直接进入容器内部查看:
bash
Copy
docker exec -it 0291fae191d9 bash
cat /etc/hosts
🗄️ 部署 MySQL
首先,从仓库拉取 MySQL 镜像到本地:
bash
Copy
docker pull mysql:5.7.16
对于 Mac M1 版本 Docker 安装 MySQL 时可能出现错误:
text
Copy
no matching manifest for linux/arm64/v8 in the manifest list entries
这是因为 M1 芯片是 arm64 架构,而 Docker Hub 上没有适用于 arm64 架构的 MySQL 镜像。MySQL 官方提供了适配 arm64 架构的 MySQL 镜像 mysql/mysql-server,所以改用下面这条命令拉取 MySQL 镜像即可:
bash
Copy
docker pull mysql/mysql-server