在 docker 环境中成功 CI 后如何部署到自定义服务器?

Posted

技术标签:

【中文标题】在 docker 环境中成功 CI 后如何部署到自定义服务器?【英文标题】:How to deploy to custom server after success CI in docker environment? 【发布时间】:2018-12-01 21:35:58 【问题描述】:

我已经做过 CI,但现在我想部署到我的服务器上。我的服务器是我做 CI 的同一台机器,但我在 docker-executor 中做 CI。所以我无法访问服务器文件夹来更新生产。 这是我的脚本:

image: node:9.11.2

cache:
  paths:
     - node_modules/

before_script:
  - npm install

stages:
  - test  
  - deploy

test:
  stage: test
  script:
    - npm run test

deploy: 
  stage: deploy
  script: 
    #here I want to go to /home/projectFolder and make git pull, npm i, npm start
    # but I can't beause I run CI in docker-environment which hasn't acces to my server's dirictories.

【问题讨论】:

【参考方案1】:

首先你应该考虑使用gitlab auto cicd(或者如果你不想使用kubernetes,可以使用它作为基础进行自定义)

您有多种方法可以做到这一点,但最简单的方法应该是使用高山图像和 - 安装 ssh(如有必要) - 加载您的私人 ssh 密钥(来自管道机密) - 通过 ssh 运行你的 npm 命令。

最干净的方法是: - 生成将有效的 Dockerfile 添加到您的项目 - 为 master 上的每个提交添加 docker 映像生成(在您的管道中) - 添加 docker rm 运行映像(在您的管道中) - 添加 docker run 新生成的图像(在您的管道中)(通过共享您的 docker 卷) - 让 nginx 重定向到你的容器。

我可以根据您的决定提供更详细的建议。

希望我能帮上忙。

【讨论】:

以上是关于在 docker 环境中成功 CI 后如何部署到自定义服务器?的主要内容,如果未能解决你的问题,请参考以下文章

成功后部署 pypi travis ci

如何使用Docker实现PHP命令行程序的CI/CD?

基于Docker构建企业Jenkins CI平台

基于Docker构建企业Jenkins CI平台

3 天烧脑式基于Docker的CI/CD实战训练营 | 北京站

Jenkins与Docker的自动化CI/CD流水线实战