我在业余时间开发了一款自己的独立产品:升讯威在线客服与营销系统。陆陆续续开发了几年,从一开始的偶有用户尝试,到如今线上环境和私有化部署均有了越来越多的稳定用户,在这个过程中,我也积累了不少如何开发运营一款独立产品的经验。我将在本文中介绍如何通过 Docker 让潜在客户快速体验你的独立产品。

如果你的产品是和我的在线客服系统一样,100% 允许用户私有化部署的,那你一定要使用 Docker 技术,让用户能够快速体验到你的系统,以及能够在生产环境中非常轻松的把你的产品用起来。千万不要把安装部署的过程弄得太复杂。

把产品做成 Docker 镜像提供给用户有很多好处:

  1. 一致的运行环境:Docker 容器能确保你的产品在不同环境中以相同的方式运行,避免了因操作系统、依赖版本不同而产生的兼容性问题。无论用户的系统是 Windows、Linux 还是 macOS,都能以一致的方式运行。

  2. 简化部署和安装:用户无需手动配置环境,直接运行 Docker 容器就可以启动产品。这对没有相关技术背景的用户尤其友好。

  3. 快速启动和隔离:Docker 镜像启动速度快,容器内的应用与外部环境隔离,避免了对宿主系统的干扰,也使得产品更容易进行升级和更新。

  4. 可移植性:Docker 镜像可以轻松地在不同的机器、云平台甚至是开发和生产环境之间移植,确保产品的跨平台兼容性。

  5. 资源隔离与优化:Docker 通过容器化技术使得每个应用有自己独立的资源和依赖,可以有效避免应用之间的冲突,提高资源使用效率。

  6. 易于维护与版本管理:Docker 镜像的版本管理简单,可以轻松切换不同版本的产品,用户可以根据需要选择合适的版本,也能快速修复或迭代。

  7. 增强安全性:Docker 提供了容器级别的隔离,减少了不同应用之间的安全风险。此外,可以在容器中定义安全策略,如限制容器的资源访问权限。

  8. 自动化和 CI/CD 集成:使用 Docker 可以与自动化部署工具结合,支持持续集成和持续部署(CI/CD),使得产品的发布流程更加高效、自动化。

我的例子

以我制作的在线客服系统 Docker 镜像为例,只需要 2 个命令,就能在用户自己的服务器上跑起来,如果用户本地安装了 Windows Docker Desktop,那只需要 1 分钟便能在电脑上体验整个系统。

  1. 从 Docker Hub 下载升讯威在线客服系统镜像

    docker pull iccb1013/linkup:latest

  2. 启动容器

    docker run -p 8021:8021 -p 8022:8022 -p 8023:8023 -p 9527:9527 -dit --restart=always --privileged=true --name=linkup_latest iccb1013/linkup:latest

  3. 在本机访问测试

    首次启动容器时将自动执行数据库初始化等操作,请稍等片刻再访问。

localhost:8021 为服务器主程序,可以使用 http://localhost:8021/status 来查看其运行状态。

localhost:8022 为静态资源站点,可以使用 http://localhost:8022/v.html 来查看其版本。

localhost:8023 为 Web 管理后台,可以使用 http://localhost:8023 来登录。

下载客服端程序(私有化部署专用版)

http://localhost:8022/shell.zip

在登录界面,点击下方“修改”,填入服务器地址 http://localhost:8021,然后使用默认站点代码和账户密码登录即可。

默认站点代码 :freesite,账户: kf1 ,密码 :123 。

如果使用 Windows Docker Desktop,那么在启动容器后,通过 http://localhost 主机地址即可直接体验。如果是部署在服务器上,只需进入容器修改配置文件即可。

如何快速为你的产品制作一个docker镜像

下面我将详细介绍如何通过 Docker 技术,制作出这样的产品镜像。

1. 安装 Docker

确保你的机器上已安装 Docker。如果还没有安装,可以按照 Docker 官网 的安装指南进行安装。

2. 创建 Dockerfile

Dockerfile 是一个文本文件,包含了构建 Docker 镜像的所有指令。你需要在项目目录下创建一个 Dockerfile 文件,通常命名为 Dockerfile,而不带扩展名。

以下是一个基本的 Dockerfile 示例:

# 使用官方的基础镜像作为起点
FROM ubuntu:20.04 # 设置维护者信息
LABEL maintainer="yourname@example.com" # 将当前目录下的所有文件复制到镜像内的 /app 目录
COPY . /app # 安装项目依赖(假设有 requirements.txt 文件)
RUN pip3 install -r requirements.txt ### 3. **构建 Docker 镜像** 在包含 `Dockerfile` 的目录下,打开终端或命令行工具,然后运行以下命令来构建镜像: ```bash
docker build -t my-image-name .

这里的 -t my-image-name 指定了镜像的名称,. 表示当前目录。

Docker 会根据 Dockerfile 的指令,逐步构建镜像。

4. 运行 Docker 容器

构建完成后,你可以使用以下命令来启动一个容器:

docker run -d -p 8080:80 my-image-name
  • -d:后台运行容器。
  • -p 8080:80:将容器内的 80 端口映射到本地的 8080 端口。
  • my-image-name:指定要运行的镜像名称。

5. 检查镜像和容器

  • 查看本地的镜像列表:
docker images
  • 查看运行中的容器:
docker ps
  • 如果你需要停止容器,可以使用以下命令:
docker stop <container-id>

6. 分享镜像

如果你希望分享镜像,可以将其推送到 Docker Hub 或其他 Docker 镜像仓库:

  1. 首先,登录到 Docker Hub:
docker login
  1. 然后,将镜像推送到 Docker Hub:
docker tag my-image-name your-dockerhub-username/my-image-name
docker push your-dockerhub-username/my-image-name

这样,别人就可以从 Docker Hub 拉取并使用你的镜像了。


钟意的话请给个赞支持一下吧,谢谢~

独立开发经验谈:如何通过 Docker 让潜在客户快速体验你的系统的更多相关文章

  1. 用前端姿势玩docker【五】快速构建中类Unix系统与Windows系统的差异化处理

    目录 用前端姿势玩docker[一]Docker通俗理解常用功能汇总与操作埋坑 用前端姿势玩docker[二]dockerfile定制镜像初体验 用前端姿势玩docker[三]基于nvm的前端环境构建 ...

  2. Unity3D游戏UI开发经验谈

    原地址:http://news.9ria.com/2013/0629/27679.html 在Unity专场上,108km创始人梁伟国发表了<Unity3D游戏UI开发经验谈>主题演讲.他 ...

  3. 第一个独立开发的游戏 怪斯特:零 已经上线APP STORE!

    今天是个值得纪念的日子,而且是双喜临门 2年多来的摸爬滚打,终于有了回报 第一喜:自己独立开发的游戏 怪斯特:零 已经通过审核并上架APP STORE! 第二喜:迈入了自己期待2年之久的游戏行业,年后 ...

  4. 《IT蓝豹》挑战独立开发项目能力

    做了5年的android开发,今天没事写写刚入行不久的时候第一次独立开发项目的心得体会,    当时我刚工作8个月,由于公司运营不善倒闭了,在2011年3月份我开始准备跳槽,    看了一周andro ...

  5. (转载)Delphi开发经验谈

    Delphi开发经验谈 开发环境-------- Delphi 7是一个很经典的版本,在Win2000/XP下推荐安装Delphi 7来开发软件,在Vista下推荐使用Delphi 2007开发软件. ...

  6. 独立开发人员低成本推广APP的18条技巧

    导语:知道并不等于运行,有些最主要的推广方法往往会被忽略.这些,是自国外开发人员总结出的这18条经验. 如今市面上充满了大牌子大公司和大制作的手机游戏,常常有游戏花300万成本开发,然后再花2000万 ...

  7. 独立开发一个App是一种怎样的体验?

    (本文原文是我在知乎上写的一篇回答:独立开发一个 App 是一种怎样的体验?) UWP业余开发者表示,非常愿意做一股清流.在喧闹无比的iOS和Android平台,为了给应用造势,太多人费尽心思,勾心斗 ...

  8. 独立开发unity2d游戏的问答群

    129443731 有志独立开发游戏的,只讨论最新的unity2d技术的.群里面主要已问答为主,喜欢聊天的就别加群了,灌水多了会被t.希望能对unity2d比较了解的已及喜欢学习的人加入.

  9. 【独立开发人员er Cocos2d-x实战 008】BMFont生成位图字体工具和Cocos2dx使用载入fnt文件

    1.首先我们须要下载而且安装BMFont工具,下载地址例如以下:http://download.csdn.net/detail/chenqiai0/8899353(里面还有具体的使用文档,假设使用中有 ...

  10. Docker+SpringBoot+Mybatis+thymeleaf的Java博客系统开源啦

    个人博客 对于技术人员来说,拥有自己的个人博客应该是一件令人向往的事情,可以记录和分享自己的观点,想到这件事就觉得有意思,但是刚开始写博客的时候脑海中是没有搭建个人博客这一想法的,因为刚起步的时候连我 ...

随机推荐

  1. [不得不知道系列]Java面试你不得不知道的基础知识一

    当今世界上使用最广泛的编程语言之一是Java.Java是通用的高级编程语言.核心java是java编程技术概念的基础,该术语由sun Microsystems用来描述Java的标准版本(JSE).核心 ...

  2. js之模块导入与导出:export、export default、module.exports、exports

    前两者export.export default可为一组,是es6的规范,和import匹配,import是es6中的语法标准:后两者module.exports.exports可为一组,是commo ...

  3. 基于python搭建FTP服务

    使用python搭建FTP服务非常容易,且非常稳定,更重要的是可以实现一些精细化的控制,例如精细的访问权限配置,详细的日志记录等工作 这里是使用了pyftpdlib模块 1. 安装 pip insta ...

  4. 通过双 key 来解决缓存并发问题

    我们在使用缓存的时候,不管Redis或者是Memcached,基本上都会遇到以下3个问题:缓存穿透.缓存并发.缓存集中失效.这篇文章主要针对[缓存并发]问题展开讨论,并给出具体的解决方案. 1.什么是 ...

  5. elasticsearch之python操作(非原生)

    elasticsearch 模块 Elasticsearch低级客户端.提供从Python到ES REST端点的直接映射. 连接集群节点 指定连接 es = Elasticsearch( ['172. ...

  6. Caused by: org.gradle.api.internal.plugins.PluginApplicationException: Faile

    解决方法: 1.新建一个安卓应用,复制下面路径红色框的代码  去替换  导入应用中的代码,就是修改gradle版本: 2.在导入的应用中如下路径添加信息 代码: android.overridePat ...

  7. VTK 设置面片背面颜色

    在上一篇文章切开了零件,发现零件内部和外部颜色一样,当需要不一样时,可以通过actor的SetBackfaceProperty方法设置背面属性. 代码跟上一篇几乎一样,只是给actor设置了SetBa ...

  8. VLC web(http)控制 (3) 播放控制

    VLC  web(http) 播放控制: 1.如果已经在打开视频 播放和暂停都是:http://127.0.0.1:8080/requests/status.xml?command=pl_pause ...

  9. QEMU CVE-2021-3947 和 CVE-2021-3929 漏洞利用分析

    QEMU CVE-2021-3947 和 CVE-2021-3929 漏洞利用分析 ‍ CVE-2021-3947 信息泄露漏洞 漏洞分析 漏洞点是 nvme_changed_nslist stati ...

  10. 解密prompt系列44. RAG探索模式?深度思考模式?

    前一阵多步RAG的风吹入了工业界,kimi推出了探索版本,各应用都推出了深度搜索,You.COM更是早就有了Genius的多步模式.其实都是类似multi-hop RAG的实现.之前学术界在讨论mul ...