Ich versuche, ein Docker-Bild mit Docker-Py in Jenkins zu bauen.Docker bauen Ubuntu: Xenial Problem
Die Skripte sieht wie folgt aus:
# Let's build the toolchain-base-image
from io import BytesIO
from docker import Client
from pprint import pprint
import sys
cli = Client(base_url="tcp://127.0.0.1:4243")
#cli = Client(base_url='unix://var/run/docker.sock')
GCC_VERSION_TAG="4_9"
with open("/path/to/docker-" + GCC_VERSION_TAG + "-gcc-base-image-dockerfile", mode="r") as dockerfile:
f = BytesIO(dockerfile.read().encode('utf-8'))
try:
response = [pprint(line["stream"]) for line in cli.build(fileobj=f, nocache=False, rm=True, tag='gcc49/toolchain-base_'+GCC_VERSION_TAG, decode=True, pull=True)]
except:
raise IOError("Invalid Dockerfile!")
if response != "None":
pprint(response[0])
print "Create container"
container = cli.create_container(image='gcc49/toolchain-base_' + GCC_VERSION_TAG + ':latest',stdin_open=True, tty=True, volumes=['/ssd', '/opt', '/nfs/'], host_config=cli.create_host_config(binds=['/ssd:/ssd:rw','/opt/:/opt:ro','/nfs:/nfs:rw']))
print "Start container"
cli.start(container=container.get('Id'))
log_stream_list = []
[log_stream_list.append(l) for l in cli.logs(container, stream=True)]
print "".join(log_stream_list)
Meine dockerfile wie folgt aussieht:
FROM ubuntu:16.04
MAINTAINER Gino
ENV CMAKE_TOOLCHAIN_FILE /path/to/toolchainfile.toolchain
ENV SOURCE_DIR /path/to/src_root
RUN apt-get update
RUN apt-get install -y python-cheetah build-essential gcc-4.9 cmake
RUN groupadd group
RUN useradd -G group -m -s /bin/bash user
RUN echo "user:user" | chpasswd
ENV HOME /home/user
ENV SHELL /bin/bash
ENV JAVA_HOME /opt/jdk1.8.0_65/
RUN mkdir -p /home/user/docker-build
WORKDIR /home/user/docker-build
# Set permissions
RUN chown -R user:group /home/*
USER user
# Start build on run
ENTRYPOINT cmake -DBUILD_JAVA=0 -DCMAKE_BUILD_TYPE=DeveloperRelease -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} -DPROJECT_CONFIGURATION="[email protected]${SOURCE_DIR}/dir" ${SOURCE_DIR} && make -j4
Mein Problem:
15:37:27 [docker-test_job] $ python /tmp/hudson5834793409651253293.py
15:37:29 u'Step 1 : FROM ubuntu:16.04\n'
15:37:29 Traceback (most recent call last):
15:37:29 File "/tmp/hudson5834793409651253293.py", line 15, in <module>
15:37:29 raise IOError("Invalid Dockerfile!")
15:37:29 IOError: Invalid Dockerfile!
15:37:29 Build step 'Execute Python script' marked build as failure
15:37:29 Stopping all containers
15:37:29 Finished: FAILURE
Wenn ich versuche, es mit ubuntu: 14,04 es funktioniert ziemlich gut. Hat jemand eine Idee? Danke für Ihre Hilfe!
Update: Einige zusätzliche Informationen: Docker 1.5 + Ubuntu 12.04 LTS. Wenn ich auf der Konsole laufen
docker build -t name/tag -f dockerfilename .
es funktioniert auch und die Docker baut das Bild als erwartet.
Haben Sie versucht, mit: FROM ubuntu: neueste Auch, warum nicht: aus Java: neuesten – Sabmit
Wenn es in der Kommandozeile funktioniert, dann vermute ich, dass es etwas in Ihrem Skript ist. ** Wie auch immer ** Docker 1.5 wird nicht mehr von Docker Hub unterstützt, sind Sie sicher, dass Sie * * ubuntu: 16.04' tatsächlich von Docker Hub * ziehen können? – thaJeztah
@Sabmit 'ubuntu: neueste' Punkte auf die neueste LTS-Version; Da 16.04 noch nicht veröffentlicht wurde, ist ': latest' momentan ein Alias für' 14.04', nicht '16.04' – thaJeztah