[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: Parametrizing a BuildConfiguration with Docker ARGs





On Wed, Feb 7, 2018 at 6:59 AM, Dan Pungă <dan punga gmail com> wrote:

Hello all!

I've recently discovered and join this mailing list; hope I'm in the right place.
I'm new to the OShift ecosystem, currently trying to develop a configuration to containerize some apps. I'm using minishift local cluster on a Ubuntu 16.04 machine (details below).

I want to write a parametrized yaml template to configure the build process for my layers (those with a dockerStrategy) with using(or, better said connecting to ) the arguments defined in my Dockerfiles. I have found that OShift doesn't support ARG instructions prior to the FROM one when it reads the Dockerfile.

you sure even docker supports that?  It's not working for me:

this works (just using an arg generically and echoing it out):

$ cat Dockerfile
FROM centos
ARG OS_name="centos"

RUN echo $OS_name
RUN exit 1

$ docker build --build-arg OS_name=centos .
Sending build context to Docker daemon 2.048 kB
Step 1/4 : FROM centos
 ---> ff426288ea90
Step 2/4 : ARG OS_name="centos"
 ---> Using cache
 ---> 59f6494cb002
Step 3/4 : RUN echo $OS_name
 ---> Running in 092e2600490e
centos
 ---> 8a3f570a033c
Removing intermediate container 092e2600490e
Step 4/4 : RUN exit 1
 ---> Running in 543cefc9eab8
The command '/bin/sh -c exit 1' returned a non-zero code: 1

This does not (not even referencing the arg in my FROM, just putting the ARG before FROM):
$ cat Dockerfile
ARG OS_name="centos"
FROM centos

RUN echo $OS_name
RUN exit 1

$ docker build --build-arg OS_name=centos .
Sending build context to Docker daemon 2.048 kB
Step 1/4 : ARG OS_name="centos"
Please provide a source image with `from` prior to commit



So i think this is a docker restriction, not an openshift one.


So, even if a docker build would run successfully with something like:

ARG OS_name="centos"
ARG OS_version="6.8"

FROM ${OS_name}:${OS_version}
#....rest of Dockerfile instructions...

if I try to define in my yaml config

strategy:
  dockerStrategy:
    buildArgs:
    - name: OS_name
      value: "7"

the build process does not work.

Has anyone else come across this issue and how did you get around it? What I'm trying to achieve is single configuration structure for multiple versions, so I wouldn't have to write separate Docker configs for different app versions. For example building a Java JRE layer on top of different OSs with one file.

Thank you,
Dan

PS: The closest thread regarding this issue that I've found in the archive is https://lists.openshift.redhat.com/openshift-archives/users/2017-January/msg00104.html

Running env details:

oc version
oc v3.6.0+c4dd4cf
kubernetes v1.6.1+5115d708d7
features: Basic-Auth GSSAPI Kerberos SPNEGO

Server https://192.168.99.100:8443
openshift v3.6.0+c4dd4cf
kubernetes v1.6.1+5115d708d7
=========

docker minishift:~$ docker version
Client:
 Version:      1.12.3
 API version:  1.24
 Go version:   go1.6.3
 Git commit:   6b644ec
 Built:        Wed Oct 26 23:26:11 2016
 OS/Arch:      linux/amd64

Server:
 Version:      1.12.3
 API version:  1.24
 Go version:   go1.6.3
 Git commit:   6b644ec
 Built:        Wed Oct 26 23:26:11 2016
 OS/Arch:      linux/amd64



_______________________________________________
users mailing list
users lists openshift redhat com
http://lists.openshift.redhat.com/openshiftmm/listinfo/users




--
Ben Parees | OpenShift


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]