MDServe
MDServe
MDServe是一个简约的网络服务器,将用Markdown编写的页面转换为HTML。它将使用文件路径作为访问点来将位于“pages”目录中的任何Markdown文件作为HTML进行服务。文件名为“index.md”的文件被视为基本路由。例如:
- 文件“pages/index.md”在“/”处可访问
- 文件“pages/blog/ireland.md”在“/blog/ireland”处可访问
- 文件“pages/blog/index.md”在“/blog”处可访问
网站的布局由“public/index.html”中的HTML定义。打开该文件,您会注意到标记“%APP%”,这是页面转换后的HTML被注入的地方。
浏览器Javascript #
默认情况下,MDServe不启用客户端Javascript。如果您的应用程序需要它,您有几个选择:
- 如果只需要纯Javascript,请将其添加到“public”目录,并在“public/index.html”中添加引用的
<script>
标签。 - 如果您喜欢Typescript,位于“src/js/”目录中的文件由特殊的“/js*”处理程序提供服务。 Op 在
public/index.html
文件中,取消注释引用/js/main.js
的脚本标签。js/main.js
文件是由 Typescript 编译器从src/js/main.ts
中生成的。您可以在src/js/
中添加其他的 Typescript 代码,但由于它在浏览器中执行,因此需要打包才能使用require
/import
语句。
项目结构 #
pages/
- 存储 Markdown 页面并定义网站的路由public/
- 静态资源src/
- ExpressJS 服务器
系统要求 #
入门指南 #
克隆这个仓库
git clone https://github.com/dan-lovelace/md-serve.git
切换到新目录
使用以下选项之一启动服务器:从源代码运行 或 使用 Docker 运行
从源代码运行 #
- 安装依赖项
- 启动开发服务器 ## 使用Docker运行
使用默认配置构建和运行容器
docker compose up --build
使用特定的环境文件构建和运行
docker compose --env-file=".env.development" up --build
本地开发 #
npm run dev
命令从源代码启动服务器,并监视 pages
、public
和 src
目录的更改。所有页面继承的基本HTML可以在 public/index.html
中找到,public
目录中的所有内容都以静态方式提供。
有一个 src/js
目录,用于存储浏览器所需的任何Javascript。默认情况下没有提供捆绑解决方案,但可以根据需要添加。
Docker和AWS #
构建并推送镜像到ECR #
在ECR中创建一个新的存储库
aws ecr create-repository md-serve
使用Docker登录到新的存储库 - 替换你自己的
ACCOUNT_NUMBER
和REGION
aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin ACCOUNT_NUMBER.dkr.ecr.REGION.amazonaws.com/md-serve
- 构建最新的镜像
- 注意: 你可以使用
--env-file
标志提供一个环境文件,例如:docker compose --env-file=".env.production" build
- 注意: 你可以使用
- 创建指向 ECR 存储库的标签 - 使用你自己的
ACCOUNT_NUMBER
和REGION
docker tag md-web-server:latest ACCOUNT_NUMBER.dkr.ecr.REGION.amazonaws.com/md-serve
- 将镜像推送到远程存储库
docker push ACCOUNT_NUMBER.dkr.ecr.REGION.amazonaws.com/md-serve
部署 #
以下是一些AWS部署选项的非常基本的步骤,还有无数其他用于托管Docker容器的选项。
EC2 #
- 使用具有Linux和Docker的映像创建新的EC2实例。 - 在AWS市场中查找
- 创建一个弹性IP并将其与实例关联
- SSH进入机器并运行上面的
aws ecr get-login-password ... | docker login ...
命令来登录到docker - 运行
aws configure
以设置凭据或手动编辑~/.aws/config
和~/.aws/credentials
- 拉取镜像
docker pull ACCOUNT_NUMBER.dkr.ecr.REGION.amazonaws.com/md-serve-repo:latest
- 使用
docker images
获取镜像ID - 使用镜像ID运行并公开正确的端口
docker run -d -p 8000:8000 2ce25025a251
- 导航到实例的公共IP
- 主页应该显示
ECS #
- 创建一个新的ECS集群
- 使用ECR镜像创建一个新的ECS任务定义
- 创建一个使用新任务定义的新ECS服务
- 等待任务启动并选择它
- 导航到任务的公共IP
- 主页应该显示
为ECS服务分配静态IP #
[https://repost.aws/knowledge-center/ecs-fargate-static-elasti 参考链接 (opens new window)