背景
近一年来,做人工智能行业,把自己的产品逐步推向标准化和常规迭代的路子上,虽然职能上做的是产品,不需要管部署的事情,那些事情让实施/运维/研发/测试来做就可以了,但自己没有摸透,甚至不知道有问题的话问题在哪里,总是觉得不安。所以趁着一个清明小假期,尝试做了下部署,也发现了一些问题,以此记录。一些敏感信息,用其他的名字代替掉,只是记录一个过程。
准备工作
- 先检查安装包是否损坏
bash product_xxx.sh3 verify
- 这一段有不知所谓的报错,
command not found
,推测是文件本身有问题,跳过无妨
- 安装docker
bash product_xxx.sh3 install-docker
- docker 原先已经安装了,这一步没有遇到什么问题
- 加载系统镜像
bash product_xxx.sh3 load-images
- 系统镜像可以正常 load 进来
- 生成映射目录和同步数据
bash product_xxx.sh3 init-docker-volumes
bash product_xxx.sh3 sync-docker-volumes
- 目录映射生成失败了,有报错,报
No such file or directory
以及Permission denied
,推测也是权限问题,
系统部署
- 部署某后台服务
- 进入 calculation 目录,
docker-compose up -d --build
- 进入 product_server 目录,
docker-compose up -d --build
- 进入 calculation 目录,
- 部署某数据服务
- 进入 data 目录,修改 data.env,
docker-compose up -d --build
- 进入 data 目录,修改 data.env,
- 部署某 SaaS 登录服务
- 进入 saas 目录,修改 saas.env.conf,
docker-compose up -d --build
- 进入 saas 目录,修改 saas.env.conf,
- 部署某产品系统
- 进入 product_web 目录,修改 docker.env,
docker-compose up -d --build
- 进入 product_web 目录,修改 docker.env,
- 部署某配置模块
- 进入 configuration 目录,
docker-compose up -d --build
- 进入 configuration_web 目录,修改 docker-compose.yml,
docker-compose up -d --build
- 进入 configuration 目录,
小结
- 可以看到,基本上都是进入相应目录,改配置,然后起 docker,流程上没有什么问题
- 一共改了四个位置的配置
- 产品需不需要懂技术的问题,通常 “了解技术边界” 已经是一个标准答案了。但是这个边界怎么去定义,又是一个模糊的地方。产品经理,应该懂得如何部署自己的产品吗?
一些问题
- 部署过程中,由于是用 mac 部署,遇到类似这样的问题
ERROR: for mysql Cannot start service mysql: b'Mounts denied
,网上找了一会儿,大概知道原因,是 mac 的 docker 文件共享路径要添加报错中提到的路径,但这个路径又没法找到,未在当前文件夹下,不知道该如何解决- 另外一个问题,是每次装一个镜像,系统内存就被吃掉得非常严重,一下子将近 20G 就没有了,找了几个方法,用这条命令可以处理。
docker system prune -a