Commit Graph

65 Commits (be6de5138bf23883f689aa37b57bef76e4b04ad2)

Author SHA1 Message Date
Tõnis Tiigi 9df59934cd
Merge pull request #2218 from tonistiigi/error-suggest
dockerfile: add suggestions to how to fix certain errors
2021-07-07 10:52:07 -07:00
Tonis Tiigi 259fba7d43 dockerfile: move run network to stable channel
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
2021-07-06 15:25:29 -07:00
Tonis Tiigi df9781b46c dockerfile: provide suggestions for mount options
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
2021-07-02 17:29:32 -07:00
Tonis Tiigi 768a12bd0d dockerfile: suggest mistyped flag names
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
2021-07-02 17:29:32 -07:00
Tonis Tiigi 277517e2a3 add error suggest pkg
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
2021-07-02 17:29:27 -07:00
Justin Chadwell 5ad1ff3e23 Add support for heredocs with ONBUILD
Signed-off-by: Justin Chadwell <me@jedevc.com>
2021-06-29 11:30:09 +01:00
Justin Chadwell de7fcce614 Integrate heredoc support into ADD/COPY and RUN
This modifies the command structures to support inline files, as well as
provides the logic to compile them down into appropriate LLB
definitions.

Signed-off-by: Justin Chadwell <me@jedevc.com>
2021-06-09 10:53:25 +01:00
Omer Mizrahi aa467196bd feat(run-mount): add support for variable expansion
Signed-off-by: Omer Mizrahi <ommizrah@microsoft.com>
2021-05-05 02:56:39 +03:00
Sebastiaan van Stijn ebed917e43
frontend/dockerfile: add RunCommand.FlagsUsed field
The FlagsUsed contains a list of flags that were used, which allows the classic
(non-buildkit) builder in dockerd to produce an error when non-supported options
are used in a Dockerfile.

This is a short-term solution; a more permanent solution will be to keep track
of which version of the Dockerfile syntax is supported, and to have the classic
builder pass the maximum supported version of the syntax.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2021-01-27 13:34:12 +01:00
Sebastiaan van Stijn 4e9bae48e7
Revert "Ensure ENTRYPOINT command has at least one argument"
This reverts commit 174bcf85ef.

This commit attempted to fix a situation where an empty entrypoint
was specified, causing a confusing error when running the image,
however, allowing the entrypoint to be reset should be a valid
use-case, and running such image on docker 20.10 at least
produces an informative error;

    docker build -t foo -<<'EOF'
    FROM busybox
    ENTRYPOINT []
    EOF

Or, to reset a previously set entrypoint:

    docker build -t foo -<<'EOF'
    FROM busybox AS one
    ENTRYPOINT ["/bin/busybox"]

    FROM one AS two
    ENTRYPOINT []
    EOF

If no command is specified for the image above:

    docker run -it --rm foo
    docker: Error response from daemon: No command specified.
    See 'docker run --help'.

Passing a command to run:

    docker run -it --rm foo sh
    /#

Given that this commit resulted in a regression/breaking change
this reverts the commit.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2020-12-03 13:36:52 +01:00
Andrew Chang 174bcf85ef Ensure ENTRYPOINT command has at least one argument
Signed-off-by: Andrew Chang <chang331006@gmail.com>
2020-12-01 15:05:25 -06:00
Tibor Vass 7bdb6592c5
Merge pull request #1693 from tonistiigi/dockerfile-comments
dockerfile: parse comments associated with args and stages
2020-10-13 00:20:49 -07:00
Tonis Tiigi 0a7f6ccf5e dockerfile: parse comments associated with args and stages
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
2020-10-12 23:11:23 -07:00
Tonis Tiigi 906e34510d dockerfile: update run mounts to stable channel
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
2020-10-04 22:22:08 -07:00
Tonis Tiigi c810b8ed25 dockerfile: allow multiple values for ARG
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
2020-09-22 11:56:51 -07:00
Tonis Tiigi 5da4a40ae8 lint: enable more linters
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
2020-07-19 09:28:36 -07:00
Chenbin b7fd382230 add chmod in COPY and ADD command
Signed-off-by: Chenbin <chen.bin11@zte.com.cn>
2020-06-10 21:37:46 +08:00
Jörg Franke 5f23bdf9d0 Expand chown value of ADD command
Signed-off-by: Jörg Franke <359489+NewJorg@users.noreply.github.com>
2020-05-02 19:37:23 +02:00
Tonis Tiigi 4b2636acca dockerfile: add more source information to errors
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
2020-04-21 23:46:17 -07:00
Tonis Tiigi bb484dcce3 dockerfile: remove IsUnknownInstruction
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
2020-04-21 10:44:24 -07:00
Tonis Tiigi e2835e55ad dockerfile: store error location in instructions parser
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
2020-04-19 20:56:31 -07:00
Tonis Tiigi 37b8832d00 upgrade errors checks to Is()
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
2020-04-18 22:53:38 -07:00
Tonis Tiigi c157d8a3ef dockerfile: remove mix of testing frameworks
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
2020-04-14 22:05:41 -07:00
Sebastiaan van Stijn 2105de3499
frontend/dockerfile: show original stagename in error-message
Before this change, the error message would show the invalid name in lowercase:

    docker build -<<'EOF'
    FROM busybox AS foo:$BAR
    EOF

    [+] Building 0.2s (2/2) FINISHED
    => [internal] load build definition from Dockerfile                                                                                                                                                                                                                                                                                                             0.0s
    => => transferring dockerfile: 67B                                                                                                                                                                                                                                                                                                                              0.0s
    => [internal] load .dockerignore                                                                                                                                                                                                                                                                                                                                0.1s
    => => transferring context: 2B                                                                                                                                                                                                                                                                                                                                  0.0s
    failed to solve with frontend dockerfile.v0: failed to create LLB definition: Dockerfile parse error line 1: invalid name for build stage: "foo:$bar", name can't start with a number or contain symbols

With this patch, the invalid stagename is shown as-is

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2019-11-26 13:50:40 +01:00
Andy Caldwell 588c07f9b4
Set RunOptions rather than modifying solve state
Signed-off-by: Andy Caldwell <andrew.caldwell@metaswitch.com>
2019-08-18 21:45:47 +01:00
Andy Caldwell 5ea3a003f7
Implement support for RUN --network=none|default|host
Signed-off-by: Andy Caldwell <andrew.caldwell@metaswitch.com>
2019-08-17 01:44:46 +01:00
Tonis Tiigi 1ac116289d dockerfile: allow required key only for secret/ssh mounts
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
2019-07-29 15:47:54 -07:00
Tonis Tiigi add2c8db8a dockerfile: allow required flag to take value
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
2019-07-26 16:54:20 -07:00
Andrey Smirnov 86e19b621e Implement frontend support for RUN --security=insecure
Example:

    RUN --security=insecure cat /proc/self/status | grep CapEff
    #84 0.093 CapEff:	0000003fffffffff

Signed-off-by: Andrey Smirnov <smirnov.andrey@gmail.com>
2019-07-19 01:01:42 +03:00
Tonis Tiigi aed5e98d92 dockerfile: allow uid/gid in cache mounts
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
2019-05-22 11:20:15 -07:00
Hao Hu 0248635269 Expand chown value of COPY command
Signed-off-by: Hao Hu <hao.hu.fr@gmail.com>
2019-04-06 10:53:05 +02:00
Tonis Tiigi 502de0e0b4 dockerfile: make tmpfs mount readwrite by default
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
2019-04-02 18:14:52 -07:00
Tonis Tiigi 2529762ae7 dockerfile: allow setting file mode/uid for ssh socket
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
2019-01-03 11:13:34 -08:00
Tonis Tiigi 12513ba394 dockerfile: remove dfextall build tag
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
2018-10-15 22:27:13 -07:00
Tonis Tiigi 079b429c12 dockerfile: fix ssh required option
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
2018-10-05 14:10:09 -07:00
Akihiro Suda fa92effc4b dockerfile: add support for RUN --mount=type=ssh
* Needs to be compiled with `dfrunmount dfssh`
* Implemented options:
 * `type`(required): needs to be `ssh`
 * `target`(optional): the socket path in the container
 * `id`(optional): id

Test script:

	#!/bin/bash
	set -exu -o pipefail
	REF=localhost:5000/dfssh:latest
	ssh-add -l
	sudo buildctl build --frontend=dockerfile.v0 --local context=. --local dockerfile=frontend/dockerfile/cmd/dockerfile-frontend \
	  --frontend-opt "build-arg:BUILDTAGS=dfrunmount dfssh" \
	  --exporter=image --exporter-opt name=$REF --exporter-opt push=true
	mkdir -p /tmp/foo
	cd /tmp/foo
	cat << EOF > Dockerfile
	# syntax=$REF
	FROM alpine
	RUN apk add --no-cache openssh-client
	RUN mkdir -p -m 0700 ~/.ssh && ssh-keyscan gitlab.com >> ~/.ssh/known_hosts
	RUN --mount=type=ssh ssh git@gitlab.com
	# "Welcome to GitLab, @GITLAB_USERNAME_ASSOCIATED_WITH_SSHKEY" should be printed here
	EOF
	sudo buildctl build --ssh default=$SSH_AUTH_SOCK --progress=plain --frontend=dockerfile.v0 --local context=. --local dockerfile=.

Signed-off-by: Akihiro Suda <suda.akihiro@lab.ntt.co.jp>
2018-10-03 14:53:43 +09:00
Tonis Tiigi d40d557692 dockerfile: fix building dfextall
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
2018-10-02 10:33:18 -07:00
Tonis Tiigi 6daf696f04 dockerfile: add required option for secrets
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
2018-08-28 16:18:08 -07:00
Tonis Tiigi 5e6729e56f dockerfile: implement secret type mounts
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
2018-08-08 18:12:16 -07:00
Yuichiro Kaneko 93e3b15854 `s/docker file/Dockerfile/`
Signed-off-by: Yuichiro Kaneko <spiketeika@gmail.com>
2018-07-19 07:38:58 +09:00
Yuichiro Kaneko ee15340993 Add a description about metaArgs return value
Signed-off-by: Yuichiro Kaneko <spiketeika@gmail.com>
2018-07-18 22:32:15 +09:00
Yuichiro Kaneko c641b43e4a Use simple `KeyValuePairOptional` to `dispatchOpt.metaArgs` and `dispatchState.buildArgs`
`KeyValuePairOptional` is enough in this case. We can avoid create `ArgCommand` out of Parser
 by replacing them with `KeyValuePairOptional`.

Signed-off-by: Yuichiro Kaneko <spiketeika@gmail.com>
2018-07-10 19:24:43 +09:00
Yuichiro Kaneko ec798d6b09 Update documents of `AddCommand`
`ADD` does not support git.

Ref: https://github.com/moby/moby/issues/14704#issuecomment-298134333

Signed-off-by: Yuichiro Kaneko <spiketeika@gmail.com>
2018-07-03 09:25:30 +09:00
Yuichiro Kaneko a448c8f3fb Fix a typo
Signed-off-by: Yuichiro Kaneko <spiketeika@gmail.com>
2018-06-30 11:20:33 +09:00
Tonis Tiigi e618878451 dockerfile: platform support
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
2018-06-25 11:06:08 -07:00
Tonis Tiigi cdcab49bfc dockerfile: expose cache sharing options
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
2018-06-19 15:57:25 -07:00
Vincent Demeester 79241f25d5
Update tests to use gotest.tools 👼
Signed-off-by: Vincent Demeester <vincent@sbr.pm>
2018-06-11 15:52:17 +02:00
Tonis Tiigi 6f569455d0 dockerfile: enable tmpfs mounts on run —mount
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
2018-06-08 13:42:38 -07:00
Tonis Tiigi af03a526e7 dockerfile: run -—mount initial support
Supports binds from images and context and cache mounts.

Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
2018-06-07 16:23:40 -07:00
Tonis Tiigi aeea615e85 dockerfile: add run mount parsing
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
2018-06-07 14:55:13 -07:00