buildah: Buildah bud : --layers option doesn't work on multistage Dockerfile
Description i tried --layers but it didn’t work with multistage dockerfile. i would like copy a file from a stage to another stage. But with --layers, the build was broken.
Steps to reproduce the issue:
- buildah bud with --layers on the following dockerfile (with copy file from a stage to another) :
buildah bud --tls-verify=false --format docker --build-arg HTTP_PROXY=http://xxx--build-arg HTTPS_PROXY=http://xxxx --build-arg http_proxy=http://xxx --build-arg https_proxy=http://xxxx --layers --build-arg VERSION=1.0.56-SNAPSHOT --build-arg REPO_NAME=maven-demo-snapshots --build-arg no_proxy=registry -pull -f Dockerfile --tag registry/buildtoolstu/eul-helloworld-app:1.0.56-SNAPSHOT docker/app
FROM registry/openshift3/ose-ansible:v3.9 as downloader
ARG REPO_NAME
ARG VERSION
ARG MAVEN_USER
ARG MAVEN_PWD
USER root
RUN ansible all -i localhost, -c local -m maven_artifact -a "repository_url=https://nexus/repository/$REPO_NAME/ group_id=groupid artifact_id=HelloWorld extension=jar version=$VERSION dest=/opt/HelloWorld.jar validate_certs=no username=$MAVEN_USER password=$MAVEN_PWD" -vvv
RUN echo `ls -al /opt`
FROM registry/java:8
ENV TZ Europe/Paris
COPY --from=downloader /opt/HelloWorld.jar /opt/
ENTRYPOINT ["java", "-jar", "/opt/HelloWorld.jar"]
Describe the results you received: On build, first stage is OK : HelloWorld.jar is copied at /opt/HelloWorld.jar
but on artifact copy, second stage doesn’t find it, the build is broken :
error building at step {Env:[PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin LANG=C.UTF-8 JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 JAVA_VERSION=8u111 JAVA_DEBIAN_VERSION=8u111-b14-2~bpo8+1 CA_CERTIFICATES_JAVA_VERSION=20140324 TZ=Europe/Paris HTTP_PROXY=http://xxxx https_proxy=http://xxxx REPO_NAME=maven-demo-snapshots MAVEN_PWD=xxxx_USER=xxx HTTPS_PROXY=http://xxxx http_proxy=http://xxxx VERSION=1.0.56-SNAPSHOT no_proxy=registry] Command:copy Args:[/opt/HelloWorld.jar /opt/] Flags:[--from=downloader] Attrs:map[] Message:COPY --from=downloader /opt/HelloWorld.jar /opt/ Original:COPY --from=downloader /opt/HelloWorld.jar /opt/}: no files found matching "/var/lib/containers/storage/overlay/bf71462139f53c58ba99a4488bd168befcb03862f8fd040252edb94a562f504d/merged/opt/HelloWorld.jar": no such file or directory
Without this options the build is passed. but docker history has any step of my build (see https://github.com/containers/buildah/issues/1022 )
Describe the results you expected: Build must be passed
Output of rpm -q buildah
or apt list buildah
:
package buildah is not installed
Output of buildah version
:
Version: 1.2
Go Version: go1.9.4
Image Spec: 1.0.0
Runtime Spec: 1.0.0
CNI Spec: 0.3.1
libcni Version: v0.6.0
Git Commit: be87762
Built: Fri Sep 14 10:12:25 2018
OS/Arch: linux/amd64
Output of cat /etc/*release
:
CentOS Linux release 7.3.1611 (Core)
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"
CentOS Linux release 7.3.1611 (Core)
CentOS Linux release 7.3.1611 (Core)
Output of uname -a
:
Linux jenkins-slave-7dngh-f3vlw 3.10.0-862.9.1.el7.x86_64 #1 SMP Wed Jun 27 04:30:39 EDT 2018 x86_64 x86_64 x86_64 GNU/Linux
Output of cat /etc/containers/storage.conf
:
# storage.conf is the configuration file for all tools
# that share the containers/storage libraries
# See man 5 containers-storage.conf for more information
# The "container storage" table contains all of the server options.
[storage]
# Default Storage Driver
driver = "overlay"
# Temporary storage location
runroot = "/var/run/containers/storage"
# Primary Read/Write location of container storage
graphroot = "/var/lib/containers/storage"
[storage.options]
# Storage options to be passed to underlying storage drivers
# AdditionalImageStores is used to pass paths to additional Read/Only image stores
# Must be comma separated list.
additionalimagestores = [
]
# Size is used to set a maximum size of the container image. Only supported by
# certain container storage drivers.
size = ""
# OverrideKernelCheck tells the driver to ignore kernel checks based on kernel version
override_kernel_check = "true"
# Remap-UIDs/GIDs is the mapping from UIDs/GIDs as they should appear inside of
# a container, to UIDs/GIDs as they should appear outside of the container, and
# the length of the range of UIDs/GIDs. Additional mapped sets can be listed
# and will be heeded by libraries, but there are limits to the number of
# mappings which the kernel will allow when you later attempt to run a
# container.
#
# remap-uids = 0:1668442479:65536
# remap-gids = 0:1668442479:65536
# Remap-User/Group is a name which can be used to look up one or more UID/GID
# ranges in the /etc/subuid or /etc/subgid file. Mappings are set up starting
# with an in-container ID of 0 and the a host-level ID taken from the lowest
# range that matches the specified name, and using the length of that range.
# Additional ranges are then assigned, using the ranges which specify the
# lowest host-level IDs first, to the lowest not-yet-mapped container-level ID,
# until all of the entries have been used for maps.
#
# remap-user = "storage"
# remap-group = "storage"
[storage.options.thinpool]
# Storage Options for thinpool
# autoextend_percent determines the amount by which pool needs to be
# grown. This is specified in terms of % of pool size. So a value of 20 means
# that when threshold is hit, pool will be grown by 20% of existing
# pool size.
# autoextend_percent = "20"
# autoextend_threshold determines the pool extension threshold in terms
# of percentage of pool size. For example, if threshold is 60, that means when
# pool is 60% full, threshold has been hit.
# autoextend_threshold = "80"
# basesize specifies the size to use when creating the base device, which
# limits the size of images and containers.
# basesize = "10G"
# blocksize specifies a custom blocksize to use for the thin pool.
# blocksize="64k"
# directlvm_device specifies a custom block storage device to use for the
# thin pool. Required if you setup devicemapper
# directlvm_device = ""
# directlvm_device_force wipes device even if device already has a filesystem
# directlvm_device_force = "True"
# fs specifies the filesystem type to use for the base device.
# fs="xfs"
# log_level sets the log level of devicemapper.
# 0: LogLevelSuppress 0 (Default)
# 2: LogLevelFatal
# 3: LogLevelErr
# 4: LogLevelWarn
# 5: LogLevelNotice
# 6: LogLevelInfo
# 7: LogLevelDebug
# log_level = "7"
# min_free_space specifies the min free space percent in a thin pool require for
# new device creation to succeed. Valid values are from 0% - 99%.
# Value 0% disables
# min_free_space = "10%"
# mkfsarg specifies extra mkfs arguments to be used when creating the base
# device.
# mkfsarg = ""
# mountopt specifies extra mount options used when mounting the thin devices.
# mountopt = ""
# use_deferred_removal Marking device for deferred removal
# use_deferred_removal = "True"
# use_deferred_deletion Marking device for deferred deletion
# use_deferred_deletion = "True"
# xfs_nospace_max_retries specifies the maximum number of retries XFS should
# attempt to complete IO when ENOSPC (no space) error is returned by
# underlying storage device.
# xfs_nospace_max_retries = "0"
About this issue
- Original URL
- State: closed
- Created 6 years ago
- Comments: 16 (9 by maintainers)
with buildah 1.4 it seems to be good. Great version! I continue testing to be sure