我有一个使用Docker的beantalk环境。
每次我推送内容时,jenkins都会构建新快照并将其上传到S3。 (我使用S3来存储我的版本)。每个版本都是一个zip,其中包含我的应用程序和Dockerfile。
然后,我用刚刚上传的版本更新BS环境(BS创建一个新版本,并将该版本上传到S3,如果存在该版本,请替换为它,这对于快照很有用)。
第一次部署版本时,一切正常。
但是当我第二次这样做时,它仍然可以正常工作,但似乎没有使用我的最新版本。 Docker不会重新构建我的最新更新的应用程序。
为什么这个 ?我错过了什么吗?这是我的Dockefile
最佳答案
基本上,似乎update-environment调用拒绝更新相同的版本号-这就是为什么我们始终依赖${maven.build.timestamp}
和 friend 的原因。这是您修饰过的pom:]
注意,我正在使用属性-这就是最新版本的建议样式(糟糕,有人忘记更新文档了)。
我决定尝试使用最新的1.4.0-SNAPSHOT。这是您应该添加到个人资料中的内容:
<profiles>
<profile>
<id>awseb</id>
<properties>
<maven.deploy.skip>true</maven.deploy.skip>
<beanstalker.region>eu-west-1</beanstalker.region>
<beanstalk.applicationName>wisdom-demo</beanstalk.applicationName>
<beanstalk.cnamePrefix>wisdom-demo</beanstalk.cnamePrefix>
<beanstalk.environmentName>${beanstalk.cnamePrefix}</beanstalk.environmentName>
<beanstalk.artifactFile>${project.basedir}/target/${project.build.finalName}.zip</beanstalk.artifactFile>
<beanstalk.environmentRef>${beanstalk.cnamePrefix}.elasticbeanstalk.com</beanstalk.environmentRef>
<maven.build.timestamp.format>yyyyMMddHHmmss</maven.build.timestamp.format>
<beanstalk.s3Key>apps/${project.artifactId}/${project.version}/${project.artifactId}-${project.version}-${maven.build.timestamp}.zip</beanstalk.s3Key>
<beanstalk.useLatestVersion>true</beanstalk.useLatestVersion>
<beanstalk.versionLabel>${project.artifactId}-${project.version}-${maven.build.timestamp}</beanstalk.versionLabel>
<beanstalk.applicationHealthCheckURL>/ping</beanstalk.applicationHealthCheckURL>
<beanstalk.instanceType>m1.small</beanstalk.instanceType>
<beanstalk.keyName>aldrin@leal.eng.br</beanstalk.keyName>
<beanstalk.iamInstanceProfile>aws-elasticbeanstalk-ec2-role</beanstalk.iamInstanceProfile>
<beanstalk.solutionStack>64bit Amazon Linux 2014.* running Docker 1.*</beanstalk.solutionStack>
<beanstalk.environmentType>SingleInstance</beanstalk.environmentType>
</properties>
<build>
<plugins>
<plugin>
<groupId>br.com.ingenieux</groupId>
<artifactId>beanstalk-maven-plugin</artifactId>
<version>1.4.0-SNAPSHOT</version>
<executions>
<execution>
<id>default-deploy</id>
<phase>deploy</phase>
<goals>
<goal>upload-source-bundle</goal>
<goal>create-application-version</goal>
<goal>put-environment</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
在上面的示例中,只需调整cnamePrefix和最新的三个属性。这是一个摘要:
因此,如果要部署,只需:
$ mvn -Pawseb部署
或者,如果您要启动它
从头开始部署最新版本(因此使用useLatestVersion),只需执行以下操作:
$ mvn -Pawseb -Dbeanstalk.versionLabel = beanstalk:create-environment
通过将versionLabel设置为空白,可以有效地激活useLatestVersion行为:如果没有版本,请使用最新版本。
哦,部署失败了吗?
十分简单:
$ mvn -Pawseb beantalk:回滚版本
关于amazon-web-services - Elastic Beanstalk,Docker和持续集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27185671/