发布于 2026-01-06 1 阅读
0

启动你自己的 dev.to 🐳 服务器——只需一条命令(几乎)!更长的基于 Docker 的命令(无需 git clone)功能:docker-run.sh 脚本 + Docker 容器构建 #1844 为什么要这样做?难道不能按照官方 README 设置服务器吗?你刚才说的 UI 测试是什么?哦,还有一件事——开发模式。祝你发布顺利!🖖🏼🚀

只需一条命令(几乎)即可启动您自己的 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
Enter fullscreen mode Exit fullscreen mode

脚本命令演示


更长的基于 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
#
Enter fullscreen mode Exit fullscreen mode

Docker Hub 链接:https://hub.docker.com/r/uilicious/dev.to


小黄人欢呼雀跃的场景

在 localhost:3000 上访问 Dev.to 示例

顺便说一句:新部署过程中生成的各种随机文章标题让我觉得很有趣。

功能:docker-run.sh 脚本 + docker 容器构建 #1844

这是哪种类型的公关稿?(可多选)

  • [ ] 重构
  • [x] 功能
  • [ ] 错误修复
  • [ ] 文档更新

描述

一个 Bash 脚本,可帮助快速设置开发环境或演示环境。

bash-3.2$ ./docker-run.sh
Enter fullscreen mode Exit fullscreen mode
# --- 
# 
#此脚本将执行以下步骤... 
# 
# 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=<?> 
# 
#请注意,所有这些也可以在运行脚本之前通过环境变量进行配置
# 
# ---
Enter fullscreen mode Exit fullscreen mode

并使用 Docker 进行部署。包含部署前重置的选项。

此处提供可选的上下文信息:https://dev.to/uilicious/adopt-your-own-devto----with-a-single-command-almost-1c04

需要一些建议……

如果有人能指导我如何在“生产”模式下运行 dev.to,那将对提升 Docker 容器的整体性能大有裨益。

已添加到文档中?

哪个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)"
Enter fullscreen mode Exit fullscreen mode

有帮助吧?

目前的脚本可能还不完善(例如,我们可以设置自动安装 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")
Enter fullscreen mode Exit fullscreen mode

并生成可共享的测试结果

Uilicious 代码片段 dev.to 测试

就像上面那样。

然而,它存在一个巨大的问题,我正在尝试解决这个问题,这个问题不仅适用于 Uilicious,也适用于一般的 UI 测试……

这就要求所有人……在代码提交后立即运行 UI 测试——就像我们运行单元测试一样。(无论是 Uilicious 这家开发公司、它的客户,还是任何开发人员)

遗憾的是,据我观察,我们平台上的绝大多数用户都只在生产环境中进行测试。只有不到一半的用户拥有测试/预发布服务器。最后,只有极少数用户会在 Git 推送时进行测试。

请勿在生产环境中进行测试

在开发过程中,测试失败并通知开发人员的时间越早,对每个人就越有利。

而通常来说,实现这一目标的最大障碍不仅仅是获得自动化 UI 测试,而是……

你能一步完成构建吗?:如果构建过程需要超过一步,就容易出错
——过于简化。——乔尔·斯波尔斯基

更具体地说,能否一步完成构建、部署和测试?

因此,我怀着一丝希望,通过让 dev.to 更容易构建和运行。

接下来我需要做的(@todo将在下一篇文章中介绍),就是将它与 Travis 连接起来,用于临时部署。最后,还需要一个能够通过 Git 推送运行 UI 测试脚本的流程。

允许它作为其他开发人员对特定 Git 推送进行完整 UI 测试的示例用例……

或许,或许可以说服dev.to 团队注册我们的产品,或者免费试用一下😉


哦,还有一件事——开发者模式

./docker-run.sh DEV
Enter fullscreen mode Exit fullscreen mode

dev.to 开发模式

一个 Bash 脚本,不仅可以用于测试和演示,而且有望用于开发。

只需一行命令,即可从克隆的存储库设置整个开发环境,并直接在 bash 中运行。

无需安装 Ruby/npm。


PS:如果有人对如何改进这个构建和部署脚本有任何反馈意见,请告诉我。

祝您发货顺利🖖🏼🚀

文章来源:https://dev.to/uilicious/adopt-your-own-devto----with-a-single-command-almost-1c04