- Fix an issue copying absolutely pathed symlinks into the container from the host.
- The son of the bride of the environment fix
Yet another fix to the portable environment.
- A fix to the portable (os x and windows) script to allow it to pass variables in the environment.
With this patch, you can supply BOX_INCLUDE_ENV
with a whitespace-separated
list of environment variables to pass to box. This admittedly a hack until real
variables arrive (0.6.0!) and we can deprecate the environment functionality.
Nothing in the binary itself has changed.
copy statements have changed:
- Copy-over-dir is now on, will appropriately copy into dirs (or create
them) or over them depending on the presence of a final
/
in the target path. - Copies of relative symlinks now work correctly.
- Copies of files with no trailing
/
are added to the image verbatim.
and finally, a long note about entrypoint and cmd:
previously, nulls would be set on the entrypoint, triggering inheritance
from run
statments that were the previous commit in the docker chain.
What this does now is set it to []string
which is an empty command in
the docker configuration.
Note that there is now no way to do entrypoint nil
in a way that will
inherit from the previous entrypoint statement, however, I don't think
this is necessarily a bad thing. :)
- Downgraded docker client to be more compatible with more versions of docker.
entrypoint
andcmd
now handle nils and arrays of strings appropriately.
The biggest change in this release is the soft-removal of OS X support. The
portable
installation should work for most users; it is simply a script which
calls docker for you.
The requirement was made because of a switch to an exciting new architecture. This architecture brings in the https://github.com/containers/image and https://github.com/containers/storage platforms and allows us to incorporate OCI image support (along with numerous other features!) and will be the future of box moving forward.
We want to support OS X and some efforts around this are in progress, so hopefully in a few versions we can bring a real binary back to OS X.
Aside, 0.5.0 contains these changes:
- Numerous fixes and improvements to formatting of output
save
function to tag and save images to a file (including OCI images)label
verb to apply labels to images- Symlinks are no longer hard-scoped to be under the WD. Copies to containers will now respect target paths more appropriately.
- Compiled with golang 1.7.5 for security and bug fixes.
- Many minor refactors and improvements.
- Improve the performance of all copy operations
- Set more appropriate defaults for user and workdir in the event they aren't used in the run.
- from statements in multi mode which reference the same image will no longer start a download for each reference, but instead coalesce into one download.
- Globbing has been broken since 0.4.1 which this resolves.
- In multi-mode, errors would occasionally reference the wrong build plan when yielding errors.
- We now have deb, rpm and homebrew packages available!
- Support .dockerignore files and per-copy-statement exclude/ignore statements[
- Support
from :scratch
andfrom ""
as viable methods of using an empty container - Compatibility fix around certain builder instructions setting the user/cmd/entrypoint/workdir incorrectly
- You can now suppress
run
statement output per-statement. - New tarring routines capture special files, and other improvements in this area.
- New
after
verb which takes a proc of methods to be run after image composition. - Fix for a bug where duplicate insertions of environment keys would cause the N++'d items to not be registered.
- Fix copying into volumes (by removing them all from the image)
- multi-build mode! Now build whole projects full of multiple images at once!
- many stability enhancements
- in particular, you should not get random unpreventable panics when invoking box anymore.
- Summing performance has improved across the board, which should drastically affect copy, flatten, and skip operations.
- Globbing on the left-hand-side of copy statements is now supported. Consult the documentation for more.
- The REPL/Shell now handles multi-line input more appropriately.
- Fix TTY handling in debug modes
- Improve signal handling in a few edge case scenarios in run statements
- USER, WORKDIR, CMD and ENTRYPOINT inheritance is much better now. It should be less surprising when issusing run statements the last layer in a series.
- Box no longer takes a final step to commit the image after the run has completed.
- New progress meters for all copy/tar/summing operations.
- Tarring routines (copy, flatten etc) no longer attempt to tar special files such as unix sockets.
- Many fixes around copy, path handling and workdir. Note that now if you want
to copy files into a target that is a directory, it will fail. If you do wish
to copy them into the directory instead of over it, suffix the directory name
with a
/
.
- Release version is reflected correctly in the binary
- New REPL/shell! You can now interactively build container images with box.
- New skip verb: skip layers that you don't want in the final image.
- Improved signal handling; canceling builds now leaves no temporary files or containers within the system.
- A new command-line flag,
box -f
, omits the automatic final commit. It is typically used with thetag
verb to avoid making two images. - The readability of progress meters was improved.
- Fix colorized output bleed for certain terminals on OS X.
- Fix run statements appropriately propagating when not supplied in the build plan
- Fix flatten statement to incorporate permissions when copying.
- Move to new official docker client.
- Clean up a file descriptor leak handling ruby files themselves.
- TTY detection (for colorized output and terminal handling) and flags to force it on (--force-tty) and off (--no-tty).
- -t/--tag flags to tag the final image with the tag name. Does not affect the tag verb in any way.
- -o/--omit can be used to filter functions/verbs from the capabilities of the builder.
- from statements now appropriately cause the image to inherit their attributes, such as CMD and ENV.
- debug: set a breakpoint in your build plan to drop into a shell. Placing this anywhere in your code, once called, will drop you into a container. Once the container terminates, its layer will be saved and the run will continue.
- import: import another file's ruby code.
- Colorized output! This provides a clearer visual experience and is appropriately turned off when no TTY is present.
This is the initial release of box! Huzzah!