Tag: 持续部署

使用Docker在WordPress上持续交付

过去我经常遇到这个问题:我有一个正在生产的wordpress网站。 我从本地机器手动部署网站。 所以,如果有变化,我再次从本地文件系统导出数据库和文件,并将它们导入远程生产服务器。 这很糟糕,特别是如果你的远程服务器有不同的环境(不同的操作系统,不同的PHP版本,不同的MySQL等)。 所以我决定使用Docker和Docker容器来运行我的Wordpress网站。 在我作为Java和Node.js应用程序开发人员的工作中,我开始喜欢使用Continuous Deliverypipe道来testing和部署从开发到生产环境的更改的方式。 我怎样才能build立一个WordPress的网站+运行在docker集装箱的MySQL的工作stream程? 特别是,如何将我在本地MySQL上所做的更改应用到远程MySQL数据库? 解决:我已经find了一个很好的讨论和解释如何保持数据在StackOverflow持久性: 去这里 DigitalOcean的这个教程也可以帮助你。

如何通过Web界面为多个实例部署Docker集群?

我有我的应用程序的几个实例,如开发支架,testing台,演示台和几个生产站。 我的应用程序是一个微服务的集群,打包在docker容器中,由docker-composepipe理。 我需要能够方便地将部分版本的应用程序部署到多个展位。 我的问题是:我应该select哪些工具来实现这个function? 理想情况下,我想要有一个网站界面,其中一个button“部署”为一个立场和我的应用程序的版本的input字段。 我们使用Teamcity来构build应用程序,我们可以使用它来持续交付,但是我正在寻找更方便和专业的工具。

Docker Cloud自动构build

我想了解通过Docker Cloud和其他CI服务器(如Jenkins,Circle)自动构build的主要区别… 从我通过Docker Cloud的理解中,我可以链接Github repo并触发特定分支更改的Web钩子。 这样做,通过适当的configuration,DockerCloud自动运行,testing和构build我的映像,并最终部署到AWS等链接的远程服务器。 因此,相同的工作stream程是可以实现的,并且使用Jenkins,Circle这样的CI服务器是常见的CI / CD实现。 基本上执行与DockerCloud相同的步骤。 使用Jenkins CI和Docker Cloud自动构build有什么区别? 我应该使用哪种方法将整个CI / CDpipe道集成到我的开发工作stream程中?

使用Gitlab CD和Docker

这篇文章也是在/ r / Gitlab和/ r / Docker上发布的 我对Gitlab相当陌生,但是我绝对喜欢它的一个本质,我真的不知道它为什么不那么受欢迎。 我在Gitlab.com上为我的个人网站托pipe了一个私人项目,我一直在想如何设置Gitlab CD来将我的主分支自动部署到作为DigitalOcean Droplet托pipe的Docker。 这里是我的最佳工作stream程,请记住,我比持续部署部分更需要帮助,而不是testing部分。 更改分支上的git 在每次提交推送时,都会运行testing 一旦我准备好融入主人,我打开一个合并请求,并再次运行testing。 然后我合并和主分支更新,这下一部分是我需要帮助。 docker服务器更新到最新的版本,并继续服务。 循环重复,更改,testing,合并,部署,重复。 我需要编写.gitlab-ci.yml文件来帮助您更新docker服务器,并确保最新版本的master服务器正在运行。 我想我最大的问题是,如何让我的docker服务器自动更新到最新版本的主? 需要更多信息: 我的网站使用Go运行 它只需要一个容器 我每天最多推送一次更新 谢谢,任何帮助,将不胜感激。

Docker自动构build从Maven Sonatype Nexus存储库下载私人jar子

我正在build设一个开发渠道。 Docker镜像将在我的Java应用程序的成功和testing版本被部署到私有 Maven仓库(Sonatype Nexus)后自动创build。 一旦我的应用程序构build成功,我需要将它发布到某处,Docker需要有权下载它并创build一个容器。 我想Docker访问Nexus Maven仓库,但我没有find如何从一个私人存储库下载一个jar子。 我没有在Nexus文档中find如何通过身份validation参数来访问专用URL。 有谁知道吗? PS:我也接受更简单的解决scheme来达到这个目的。

春季启动应用程序需要docker?

任何有关春季启动应用程序的build议都需要dockerization? 使用Dockerization增加部署时间? a. Spring boot app with docker then has to go with building image -> pushing to docker registry -> then pull from docker registry and at last running it. b. whole process takes time and Continuos deployment is taking now time. 由于Spring引导带有embedded式tomcat,build议将可执行jar文件作为java -jar运行,而您只需要在可部署主机上使用JRE? 让我知道你的想法

docker在生产

如何在docker生产中创build工作stream程。 现在它的工作: 开发人员提交更改为VCS CI使用应用程序构buildDocker容器 用最新的标签推入registry docker-compose.yaml放在服务器上 拉出新的图像并重新运行 但是如果我们只有一个registry,任何开发人员都可能会崩溃生产 如何创build工作过程来解决这个问题。

Docker容器中的configurationpipe理

目前我有configuration文件存储在GitHub。 我有一个格式如下的单个json文件{ DEV: { key1 : val1, key2 : val2 } , PROD: { key1 : val1, key2 : val2 } } 。 我的构build系统克隆git仓库,构build项目并创build一个Docker镜像,并存储在私有Dockerregistry中。 我有jar文件和configuration文件复制到Docker图像。 每当我启动一个容器,我注入一个环境variables(ENV = DEV / PROD),我的代码用它来根据环境读取configuration。 我在这里有几个问题: 维护环境特定configuration的最佳方法是什么? configuration文件可能包含敏感数据,如api密钥和秘密如何在构buildDocker映像时encryption和存储和解密? 如果我想改变一些configuration,我需要触发构build,因为我的configuration文件放在Docker镜像中。 我可以将configuration文件放在Docker容器外作为一个卷,以便我可以replaceconfiguration文件并重新启动容器,以便代码读取更新的configuration? 如果我想放在Docker容器之外,我还可以使用任何集群pipe理工具进行容器编排/pipe理(Kubernetes / ECS)吗? 在Docker容器中运行应用程序的方法是通过重新启动容器而不是构build新的Docker镜像并部署新容器来读取更新后的configuration文件?

docker使用从registry的以前的构buildcaching构build

我正在configuration一个竹子构build计划来构builddocker镜像。 使用AWS ECS作为registry。 builddevise划是这样的; 拉最新的标签 docker pull xxx.dkr.ecr.eu-west-1.amazonaws.com/myimage:latest 用最新的标签build立图像 docker build -t myimage:latest . 标记图像(ECS必需) docker tag -f myimage:latest xxx.dkr.ecr.eu-west-1.amazonaws.com/myimage:latest 将图像推送到registry docker push xx.dkr.ecr.eu-west-1.amazonaws.com/myimage:latest 由于构build任务每次都在不同的新build构build引擎/服务器上运行,因此它没有本地caching​​。 当我不改变Dockerfile的任何东西,并再次执行(在另一个服务器),我期望docker使用本地caching(来自docker拉),不会再执行每一行。 但它试图每次都build立图像。 我也期待,当我改变文件底部的东西,它会使用caching,只执行最新的行,但我不知道这一点。 我是否知道错了什么或者有什么意见?

Docker Swarm部署 – 等待服务/容器出现

我有一个工作群设置和滚动更新部署。 由于我不得不在部署后执行一些任务(如数据库迁移),我添加了一个“经理”服务到堆栈。 此服务仅限于节点pipe理器 – 所以我总是有办法find它。 要获取当前的容器ID我使用这个命令: export MANAGER_ID=$(docker –tls ps –filter label=com.docker.swarm.service.name=projectname-php-manager -q) 这工作…但不在部署期间。 stack deploy即将退出(容器已启动),甚至是pipe理器容器得到更新。 我还添加了一个sleep 10 befor geting的containerID,但结果不尽相同。 有没有办法等待或知道何时部署特定的服务? 完整的部署看起来像这样(在gitlab-ci工作中完成 – 但这不是问题的根源): deploy:staging: variables: DOCKER_HOST: "tcp://swarm-manager.hostname.tld:2376" DOCKER_CERT_PATH: "/home/gitlab-runner/docker/swarm-manager.hostname.tld" VERSION_TAG: "$CI_COMMIT_TAG" MYSQL_PROD_PASSWORD: "$MYSQL_PROD_PASSWORD" SECRET_TOKEN: "$SECRET_TOKEN" script: – docker –tls stack deploy -c docker-compose.prod.yml project-name –with-registry-auth –prune – sleep 10 – export MANAGER_ID=$(docker –tls ps […]