只需一条命令(几乎)即可启动您自己的 dev.to 🐳 服务器!
更长的基于 Docker 的命令(不使用 Git 克隆)
功能:docker-run.sh 脚本 + docker 容器构建 #1844
为什么要这样做?难道不能按照官方的README文件来设置服务器吗?
你刚才说到用户界面测试的什么来着?
哦,还有一件事——开发者模式
祝您发货顺利🖖🏼🚀
(免责声明:此bash脚本仅在Ubuntu/MacOS系统上使用Docker进行过测试)
克隆存储库,执行 bash 脚本,并按照屏幕上的说明进行操作。
git clone https://github.com/uilicious/dev.to-docker.git && \
cd dev.to-docker && sudo ./docker-run.sh INTERACTIVE-DEMO
更长的基于 Docker 的命令(不使用 Git 克隆)
注意:您需要更换所有各种部件。<values>
# Run a postgres server configured for dev.to
docker run -d --name dev-to-postgres \
-e POSTGRES_PASSWORD=devto \
-e POSTGRES_USER=devto \
-e POSTGRES_DB=PracticalDeveloper_development \
-v "<POSTGRES_DATA>:/var/lib/postgresql/data" \
postgres:10.7-alpine;
# Wait about 30 seconds, to give the postgres container time to start
sleep 30
#
# Run the prebuilt dev.to container
# binded to localhost:3000
#
# Algoliasearch API key is required for dev.to,
# for login do consider adding github/twitter keys as well
# see : https://github.com/thepracticaldev/dev.to/blob/master/config/sample_application.yml
#
docker run -d -p 3000:3000 \
--name dev-to-app \
--link dev-to-postgres:db \
-v "<DEVTO_UPLOAD_DIR>:/usr/src/app/public/uploads/" \
-e ALGOLIASEARCH_APPLICATION_ID=<APP_ID> \
-e ALGOLIASEARCH_SEARCH_ONLY_KEY=<SEARH_KEY> \
-e ALGOLIASEARCH_API_KEY=<ADMIN_KEY> \
uilicious/dev.to
#
# Also : do give 5~10 minutes for the server to be up.
# It does take a long time to setup and start
#
Docker Hub 链接:https://hub.docker.com/r/uilicious/dev.to
功能:docker-run.sh 脚本 + docker 容器构建 #1844
这是哪种类型的公关稿?(可多选)
- [ ] 重构
- [x] 功能
- [ ] 错误修复
- [ ] 文档更新
描述
一个 Bash 脚本,可帮助快速设置开发环境或演示环境。
bash-3.2$ ./docker-run.sh
# ---
#
#此脚本将执行以下步骤...
#
# 1) 停止并移除所有名为“dev-to-postgres”和“dev-to”的 Docker 容器
# 2) 如果 RUN_MODE 以“RESET-”开头,则重置所有存储目录
# 3) 构建名为“dev-to:dev”或“dev-to:demo”的 dev.to Docker 镜像
# 4) 部署 postgres 容器,并将“_docker-storage/postgres”挂载为名称“dev-to-postgres”
# 5) 部署名为“dev-to-app”的 dev-to 容器,并将其端口设置为 3000
#
#要正确运行此脚本,请在 dev.to 仓库文件夹内执行以下命令...
# './docker-run.sh [RUN_MODE] [其他 Docker 环境参数]'
#
#或者,要以“交互模式”运行此脚本,只需运行
# './docker-run.sh INTERACTIVE-DEMO'
#
# ---
# ---
#
# RUN_MODE 可以是以下几种:
#
# - 'DEV':启动容器进入 bash,并提供快速入门指南
# - 'DEMO':启动容器并运行 dev.to(需要 ALGOLIA 环境变量)
# - 'RESET-DEV':在以 DEV 模式运行之前,重置 postgresql 和上传数据目录以进行全新部署
# - 'RESET-DEMO':在以 DEMO 模式运行之前,重置 postgresql 和上传数据目录以进行全新部署
# - 'INTERACTIVE-DEMO':以“交互”模式运行此脚本以设置“DEMO”
#
#例如,要在 bash 中运行开发容器,只需运行
# './docker-run.sh DEV'
#
#要运行一个简单的演示,使用一些虚拟数据(将 <?> 替换为实际的密钥)
# './docker-run.sh DEMO -e ALGOLIASEARCH_APPLICATION_ID=<?> -e ALGOLIASEARCH_SEARCH_ONLY_KEY=<?> -e ALGOLIASEARCH_API_KEY=<?>'
#
#最后,要运行一个可运行的演示,您需要提供以下任一选项……
# './docker-run.sh .... -e GITHUB_KEY=<?> -e GITHUB_SECRET=<?> -e GITHUB_TOKEN=<?>
#
#或者……
# './docker-run.sh ....-e TWITTER_ACCESS_TOKEN=<?> -e TWITTER_ACCESS_TOKEN_SECRET=<?> -e TWITTER_KEY=<?> -e TWITTER_SECRET=<?>
#
#请注意,所有这些也可以在运行脚本之前通过环境变量进行配置
#
# ---
并使用 Docker 进行部署。包含部署前重置的选项。
此处提供可选的上下文信息:https://dev.to/uilicious/adopt-your-own-devto----with-a-single-command-almost-1c04
需要一些建议……
如果有人能指导我如何在“生产”模式下运行 dev.to,那将对提升 Docker 容器的整体性能大有裨益。
已添加到文档中?
- Docker Hub 的示例 README 文件:https://github.com/uilicious/dev.to-docker/blob/feature/docker-run-script/dockerhub-readme.md
- https://cloud.docker.com/u/uilicious/repository/docker/uilicious/dev.to
- 如果这样可以的话,我可以修改一下readme文件吗?
哪个GIF图最能形容这次公关活动?
哪个GIF图最能形容你此刻的感受?
PS:如果有人能指导我如何在“生产”模式下运行 dev.to,对于提高这种设置下的整体 docker 容器性能来说将非常有帮助。
为什么要这样做?难道不能按照官方的README文件来设置服务器吗?
事情就是从那时开始的,然后……
这并非 dev.to 本身的问题,而是因为我不是Ruby 开发人员。
我只想快速启动一个服务器,以便我可以在上面编写一些 UI 测试脚本(稍后会详细介绍)。
我真的不想去搞清楚怎么安装 Ruby、解决缺失的操作系统依赖项、修复我的 npm 版本、弄清楚为什么现有的 Docker 构建缺少镜像等等等等……
就在我忙着处理所有这些事情的时候,我突然想起了@ben 之前写过的一篇文章……
为了实现未来由社区运营的dev.to一系列去中心化dev.to.like网络,我们需要一个部署快捷、易于任何人使用的网站。
不仅仅是那些“需要”了解如何使用 Ruby、PostgreSQL、Node.js,甚至 Docker 和 Docker Compose 的人……
为了推广一款软件,我们已经设置了数百个其他人为障碍……
就我个人经验而言,能够快速制作一个简洁明了的演示视频,对于说服他人大有裨益……少即是多,这句话在这里确实适用……
说服其他人不仅使用https://dev.to/该产品本身,而且还使用其开源代码库,或许可以根据自己的需要进行调整,更重要的是,还可以为其做出贡献!
对于自制软件用户来说,想想你为自己或他人使用过多少次这行代码。
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
有帮助吧?
目前的脚本可能还不完善(例如,我们可以设置自动安装 Docker,以防它不存在,而且将来或许还能摆脱对 Algolia 的硬性依赖)。但这无疑是朝着这个方向迈出的又一步。
你刚才说到用户界面测试的什么来着?
我在 uilicious 里的工作是运行像这样的测试脚本。
// Lets go to dev.to
I.goTo("https://dev.to")
// Fill up search
I.fill("Search", "uilicious")
I.pressEnter()
// I should see myself or my co-founder
I.see("Shi Ling")
I.see("Eugene Cheah")
并生成可共享的测试结果
就像上面那样。
然而,它存在一个巨大的问题,我正在尝试解决这个问题,这个问题不仅适用于 Uilicious,也适用于一般的 UI 测试……
这就要求所有人……在代码提交后立即运行 UI 测试——就像我们运行单元测试一样。(无论是 Uilicious 这家开发公司、它的客户,还是任何开发人员)
遗憾的是,据我观察,我们平台上的绝大多数用户都只在生产环境中进行测试。只有不到一半的用户拥有测试/预发布服务器。最后,只有极少数用户会在 Git 推送时进行测试。
在开发过程中,测试失败并通知开发人员的时间越早,对每个人就越有利。
而通常来说,实现这一目标的最大障碍不仅仅是获得自动化 UI 测试,而是……
你能一步完成构建吗?:如果构建过程需要超过一步,就容易出错
——过于简化。——乔尔·斯波尔斯基
更具体地说,能否一步完成构建、部署和测试?
因此,我怀着一丝希望,通过让 dev.to 更容易构建和运行。
接下来我需要做的(@todo将在下一篇文章中介绍),就是将它与 Travis 连接起来,用于临时部署。最后,还需要一个能够通过 Git 推送运行 UI 测试脚本的流程。
允许它作为其他开发人员对特定 Git 推送进行完整 UI 测试的示例用例……
或许,或许可以说服dev.to 团队注册我们的产品,或者免费试用一下😉
哦,还有一件事——开发者模式
./docker-run.sh DEV
一个 Bash 脚本,不仅可以用于测试和演示,而且有望用于开发。
只需一行命令,即可从克隆的存储库设置整个开发环境,并直接在 bash 中运行。
无需安装 Ruby/npm。
PS:如果有人对如何改进这个构建和部署脚本有任何反馈意见,请告诉我。




