- 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.
entrypointandcmdnow 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
savefunction to tag and save images to a file (including OCI images)labelverb 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 :scratchandfrom ""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
runstatement output per-statement. - New tarring routines capture special files, and other improvements in this area.
- New
afterverb 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 thetagverb 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!