Skip to content

Commit

Permalink
Update changelog for tar-creation mode.
Browse files Browse the repository at this point in the history
See #139 for details. Should fix #51 as well.
  • Loading branch information
rhuss committed May 15, 2015
1 parent cb22450 commit bd808e9
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 15 deletions.
3 changes: 2 additions & 1 deletion doc/changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@
- Added watch mode for images with `-Ddocker.watch` (#141)
- Added support for inline assemblies (#157, #158)
- Add support for variable substitution is environment declarations (#137)

- Use Tar archive as intermediate container when creating image (#139)

* **0.11.3**
- Add support for removeVolumes in `docker:stop` configuration (#120)
- Add support for setting a custom maintainer in images (#117)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
import org.codehaus.plexus.archiver.manager.NoSuchArchiverException;
import org.codehaus.plexus.archiver.tar.TarArchiver;
import org.codehaus.plexus.archiver.tar.TarLongFileMode;
import org.codehaus.plexus.archiver.util.DefaultArchivedFileSet;
import org.codehaus.plexus.archiver.util.DefaultFileSet;
import org.codehaus.plexus.component.annotations.Component;
import org.codehaus.plexus.component.annotations.Requirement;
Expand Down Expand Up @@ -65,7 +66,7 @@ public File createDockerTarArchive(String imageName, MojoParameters params, Buil
(assemblyConfig.getInline() != null ||
assemblyConfig.getDescriptor() != null ||
assemblyConfig.getDescriptorRef() != null)) {
createAssemblyDirArchive(assemblyConfig, params, buildDirs);
createAssemblyTarArchive(assemblyConfig, params, buildDirs);
}

File extraDir = null;
Expand Down Expand Up @@ -103,20 +104,15 @@ private File validateDockerDir(MojoParameters params, String dockerFileDir) thro
private File createTarball(BuildDirs buildDirs, File extraDir) throws MojoExecutionException {
File archive = new File(buildDirs.getTemporaryRootDirectory(), "docker-build.tar");
try {
TarArchiver archiver = (TarArchiver) archiverManager.getArchiver("tar");
archiver.setLongfile(TarLongFileMode.posix);
// archiver.addFileSet(DefaultFileSet.fileSet(buildDirs.getOutputDirectory()));
archiver.addArchivedFileSet(new File(buildDirs.getOutputDirectory(),"maven.tgz"),"maven/");

TarArchiver archiver = createArchiver(buildDirs.getOutputDirectory(), archive);
if (extraDir != null) {
// User Dockerfile from extra dir
archiver.addFileSet(DefaultFileSet.fileSet(extraDir));

}
if( extraDir == null || ! new File(extraDir,"Dockerfile").exists())
{//only add docker file if not in extra
archiver.addFile(new File(buildDirs.getOutputDirectory(),"Dockerfile"), "Dockerfile");
} else {
// Add own Dockerfile
archiver.addFile(new File(buildDirs.getOutputDirectory(),"Dockerfile"), "Dockerfile");
}
archiver.setDestFile(archive);

archiver.createArchive();
return archive;
} catch (NoSuchArchiverException e) {
Expand All @@ -125,7 +121,20 @@ private File createTarball(BuildDirs buildDirs, File extraDir) throws MojoExecut
throw new MojoExecutionException("Cannot create archive " + archive, e);
}
}


private TarArchiver createArchiver(File outputDir, File archive) throws NoSuchArchiverException {
TarArchiver archiver = (TarArchiver) archiverManager.getArchiver("tar");
archiver.setLongfile(TarLongFileMode.posix);

DefaultArchivedFileSet archiveSet =
DefaultArchivedFileSet.archivedFileSet(new File(outputDir,"maven.tgz"));
archiveSet.setPrefix("maven/");
archiveSet.setIncludingEmptyDirectories(true);
archiver.addArchivedFileSet(archiveSet);
archiver.setDestFile(archive);
return archiver;
}

// visible for testing
DockerFileBuilder createDockerFileBuilder(BuildImageConfiguration buildConfig, AssemblyConfiguration assemblyConfig) {
DockerFileBuilder builder =
Expand Down Expand Up @@ -154,7 +163,7 @@ DockerFileBuilder createDockerFileBuilder(BuildImageConfiguration buildConfig, A
return builder;
}

private void createAssemblyDirArchive(AssemblyConfiguration assemblyConfig, MojoParameters params, BuildDirs buildDirs) throws MojoExecutionException {
private void createAssemblyTarArchive(AssemblyConfiguration assemblyConfig, MojoParameters params, BuildDirs buildDirs) throws MojoExecutionException {
DockerAssemblyConfigurationSource source =
new DockerAssemblyConfigurationSource(params, buildDirs, assemblyConfig);

Expand Down

0 comments on commit bd808e9

Please sign in to comment.