This repository was archived by the owner on Mar 23, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 388
This repository was archived by the owner on Mar 23, 2019. It is now read-only.
Import fails when Dockerfile contains ADD with a directory #573
Copy link
Copy link
Closed
Labels
Description
- Bug Report
Dockerfile
FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir /project
WORKDIR /project
ADD requirements.txt /project/
RUN pip install -r requirements.txt
ADD testapp /project/
RUN /project/manage.py migrate
CMD ["python3", "/project/manage.py", "runserver", "0.0.0.0:8000"]
SUMMARY
The import command fails when the Dockerfile contains the ADD command pointing to a directory.
WORKAROUND
Replacing ADD with COPY resolves the issue.
STEPS TO REPRODUCE
- Save the Dockerfile into a new directory
- Inside that directory create another one named "testapp"
- Run
ansible-container import .
EXPECTED RESULTS
Project correctly imported to ansible-container.
ACTUAL RESULTS
$ ansible-container import .
ERROR Unknown exception
Traceback (most recent call last):
File "/home/.../lib/python3.5/site-packages/container/cli.py", line 268, in __call__
getattr(core, u'hostcmd_{}'.format(args.subcommand))(**vars(args))
File "/home/.../lib/python3.5/site-packages/container/__init__.py", line 28, in __wrapped__
return fn(*args, **kwargs)
File "/home/.../lib/python3.5/site-packages/container/core.py", line 425, in hostcmd_import
engine_obj.import_project(base_path, **kwargs)
File "/home/.../lib/python3.5/site-packages/container/__init__.py", line 28, in __wrapped__
return fn(*args, **kwargs)
File "/home/.../lib/python3.5/site-packages/container/docker/engine.py", line 769, in import_project
dfi.run()
File "/home/.../lib/python3.5/site-packages/container/docker/importer.py", line 489, in run
(list(parser), os.path.join(self.role_path, 'tasks', 'main.yml')),
File "/home/.../lib/python3.5/site-packages/container/docker/importer.py", line 187, in __iter__
comments=preparsed.get('comments', [])):
File "/home/.../lib/python3.5/site-packages/container/docker/importer.py", line 40, in __wrapped__
to_return = fn(self, payload, comments, **kwargs)
File "/home/.../lib/python3.5/site-packages/container/docker/importer.py", line 347, in parse_ADD
_ = tarfile.open(real_path, mode='r:*')
File "/home/.../lib/python3.5/tarfile.py", line 1559, in open
return func(name, "r", fileobj, **kwargs)
File "/home/.../lib/python3.5/tarfile.py", line 1657, in bz2open
compresslevel=compresslevel)
File "/home/.../python3.5/lib/python3.5/bz2.py", line 95, in __init__
self._fp = _builtin_open(filename, mode)
IsADirectoryError: [Errno 21] Is a directory: './testapp'
OS / ENVIRONMENT
$ ansible-container --debug version
Ansible Container, version 0.9.1
Linux, localhost, 4.4.0-79-generic, #100~14.04.1-Ubuntu SMP Fri May 19 18:36:51 UTC 2017, x86_64
3.5.3 (default, May 6 2017, 00:22:52)
[GCC 4.8.4] /home/...VirtEnv.../bin/python3.5
{
"ClusterStore": "",
"SwapLimit": false,
"SystemStatus": null,
"CPUShares": true,
"InitBinary": "docker-init",
"MemTotal": 6102839296,
"IPv4Forwarding": true,
"OperatingSystem": "Ubuntu 14.04.5 LTS",
"Plugins": {
"Network": [
"bridge",
"host",
"macvlan",
"null",
"overlay"
],
"Volume": [
"local"
],
"Authorization": null
},
"MemoryLimit": true,
"SystemTime": "2017-06-02T12:07:31.655921233+02:00",
"ContainersRunning": 1,
"Swarm": {
"RemoteManagers": [
{
"Addr": "192.168.1.10:2377",
"NodeID": "z5ltpxxmb4kibrtzoubx1jzjj"
}
],
"Nodes": 4,
"NodeID": "z5ltpxxmb4kibrtzoubx1jzjj",
"NodeAddr": "192.168.1.10",
"LocalNodeState": "active",
"ControlAvailable": true,
"Error": "",
"Cluster": {
"ID": "7s5h0wgo55z4aa279t8thuk3r",
"CreatedAt": "2017-06-01T14:28:26.191390983Z",
"Version": {
"Index": 174
},
"UpdatedAt": "2017-06-02T02:28:26.194754185Z",
"Spec": {
"CAConfig": {
"NodeCertExpiry": 7776000000000000
},
"Raft": {
"HeartbeatTick": 1,
"ElectionTick": 3,
"SnapshotInterval": 10000,
"KeepOldSnapshots": 0,
"LogEntriesForSlowFollowers": 500
},
"TaskDefaults": {},
"EncryptionConfig": {
"AutoLockManagers": false
},
"Dispatcher": {
"HeartbeatPeriod": 5000000000
},
"Orchestration": {
"TaskHistoryRetentionLimit": 5
},
"Name": "default"
}
},
"Managers": 1
},
"CpuCfsPeriod": true,
"Labels": null,
"NoProxy": "",
"LoggingDriver": "json-file",
"BridgeNfIp6tables": true,
"RegistryConfig": {
"Mirrors": [],
"IndexConfigs": {
"docker.io": {
"Mirrors": null,
"Secure": true,
"Official": true,
"Name": "docker.io"
},
"docker-host:5000": {
"Mirrors": [],
"Secure": false,
"Official": false,
"Name": "docker-host:5000"
}
},
"InsecureRegistryCIDRs": [
"127.0.0.0/8"
]
},
"ContainersStopped": 0,
"Isolation": "",
"NCPU": 4,
"ServerVersion": "17.03.1-ce",
"Images": 10,
"KernelMemory": true,
"Name": "samuraj.pl",
"NGoroutines": 159,
"Driver": "aufs",
"ContainersPaused": 0,
"CpuCfsQuota": true,
"DriverStatus": [
[
"Root Dir",
"/var/lib/docker/aufs"
],
[
"Backing Filesystem",
"extfs"
],
[
"Dirs",
"25"
],
[
"Dirperm1 Supported",
"true"
]
],
"HttpsProxy": "",
"ID": "WATP:X33H:FWGQ:BAEX:CHVS:L3NA:KXEC:RFCU:B3VN:AANJ:PDDJ:OGLE",
"LiveRestoreEnabled": false,
"OSType": "linux",
"DockerRootDir": "/var/lib/docker",
"OomKillDisable": true,
"NFd": 39,
"CPUSet": true,
"BridgeNfIptables": true,
"SecurityOptions": [
"name=apparmor"
],
"KernelVersion": "4.4.0-79-generic",
"CgroupDriver": "cgroupfs",
"NEventsListener": 0,
"Containers": 1,
"ClusterAdvertise": "",
"HttpProxy": "",
"DefaultRuntime": "runc",
"InitCommit": {
"Expected": "949e6fa",
"ID": "949e6fa"
},
"Debug": false,
"Architecture": "x86_64",
"IndexServerAddress": "https://index.docker.io/v1/",
"RuncCommit": {
"Expected": "54296cf40ad8143b62dbcaa1d90e520a2136ddfe",
"ID": "54296cf40ad8143b62dbcaa1d90e520a2136ddfe"
},
"ContainerdCommit": {
"Expected": "4ab9917febca54791c5f071a9d1f404867857fcc",
"ID": "4ab9917febca54791c5f071a9d1f404867857fcc"
},
"Runtimes": {
"runc": {
"path": "docker-runc"
}
},
"ExperimentalBuild": false
}
{
"GitCommit": "c6d412e",
"MinAPIVersion": "1.12",
"Os": "linux",
"Version": "17.03.1-ce",
"Arch": "amd64",
"KernelVersion": "4.4.0-79-generic",
"BuildTime": "2017-03-27T17:10:36.401799458+00:00",
"ApiVersion": "1.27",
"GoVersion": "go1.7.5"
}