Skip to content
This repository has been archived by the owner on Jun 13, 2021. It is now read-only.

Relative paths mounts in volumes renders incorrectly #582

Open
maxhr opened this issue Jul 29, 2019 · 4 comments
Open

Relative paths mounts in volumes renders incorrectly #582

maxhr opened this issue Jul 29, 2019 · 4 comments
Labels

Comments

@maxhr
Copy link

maxhr commented Jul 29, 2019

Description
Mounting a relative path - such as ./mounted-folder - renders as mounted-folder.
Then when running docker-compose up I receive this error:
invalid mount config for type "bind": invalid mount path: 'mounted-folder' mount path must be absolute.
I would expect the source path to stay as is.

Steps to reproduce the issue:

  1. My .dockerapp file
version: 0.1.0
name: test
---
version: "3.6"
services:
  hello:
    image: hashicorp/http-echo
    volumes:
    - ./mounted-folder:/mounted-folder

---
{}
  1. Run docker app render

Describe the results you received:

version: "3.6"
services:
  hello:
    image: my-image
    volumes:
    - type: bind
      source: mounted-folder
      target: /mounted-folder

Describe the results you expected:

version: "3.6"
services:
  hello:
    image: my-image
    volumes:
    - type: bind
      source: ./mounted-folder
      target: /mounted-folder

Output of docker version:

Client: Docker Engine - Community
 Version:           19.03.1
 API version:       1.40
 Go version:        go1.12.5
 Git commit:        74b1e89
 Built:             Thu Jul 25 21:18:17 2019
 OS/Arch:           darwin/amd64
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          19.03.1
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.12.5
  Git commit:       74b1e89
  Built:            Thu Jul 25 21:17:52 2019
  OS/Arch:          linux/amd64
  Experimental:     true
 containerd:
  Version:          v1.2.6
  GitCommit:        894b81a4b802e4eb2a91d1ce216b8817763c29fb
 runc:
  Version:          1.0.0-rc8
  GitCommit:        425e105d5a03fabd737a126ad93d62a9eeede87f
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683

Output of docker-app version:

Version:               v0.8.0
Git commit:            7eea32b7
Built:                 Thu Jul 25 21:26:00 2019
OS/Arch:               darwin/amd64
Experimental:          off
Renderers:             none
Invocation Base Image: docker/cnab-app-base:v0.8.0

Output of docker info:

Client:
 Debug Mode: false
 Plugins:
  app: Docker Application (Docker Inc., v0.8.0)
  buildx: Build with BuildKit (Docker Inc., v0.2.2-10-g3f18b65-tp-docker)

Server:
 Containers: 13
  Running: 4
  Paused: 0
  Stopped: 9
 Images: 41
 Server Version: 19.03.1
 Storage Driver: overlay2
  Backing Filesystem: extfs
  Supports d_type: true
  Native Overlay Diff: true
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: active
  NodeID: sf6i0kaitvdk1oy9p8k9h1vf1
  Is Manager: true
  ClusterID: 044hk80wcl7rw968ijom7vi4t
  Managers: 1
  Nodes: 1
  Default Address Pool: 10.0.0.0/8
  SubnetSize: 24
  Data Path Port: 4789
  Orchestration:
   Task History Retention Limit: 5
  Raft:
   Snapshot Interval: 10000
   Number of Old Snapshots to Retain: 0
   Heartbeat Tick: 1
   Election Tick: 10
  Dispatcher:
   Heartbeat Period: 5 seconds
  CA Configuration:
   Expiry Duration: 3 months
   Force Rotate: 0
  Autolock Managers: false
  Root Rotation In Progress: false
  Node Address: 192.168.65.3
  Manager Addresses:
   192.168.65.3:2377
 Runtimes: runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 894b81a4b802e4eb2a91d1ce216b8817763c29fb
 runc version: 425e105d5a03fabd737a126ad93d62a9eeede87f
 init version: fec3683
 Security Options:
  seccomp
   Profile: default
 Kernel Version: 4.9.184-linuxkit
 Operating System: Docker Desktop
 OSType: linux
 Architecture: x86_64
 CPUs: 6
 Total Memory: 1.952GiB
 Name: docker-desktop
 ID: 4VMB:BMJ2:FKFI:G6WP:3FX5:NV67:4YIA:QJHH:LF3R:EUZB:Y7ZP:7FER
 Docker Root Dir: /var/lib/docker
 Debug Mode: true
  File Descriptors: 123
  Goroutines: 253
  System Time: 2019-07-29T11:42:02.253667702Z
  EventsListeners: 3
 HTTP Proxy: gateway.docker.internal:3128
 HTTPS Proxy: gateway.docker.internal:3129
 Registry: https://index.docker.io/v1/
 Labels:
 Experimental: true
 Insecure Registries:
  127.0.0.0/8
 Live Restore Enabled: false
 Product License: Community Engine
@jcsirot
Copy link
Contributor

jcsirot commented Jul 29, 2019

Hello @maxhr Thank you for reporting this issue.

@koustubhg
Copy link

Is there any temporary workaround for this one?

@silvin-lubecki
Copy link
Contributor

We are addressing this issue among others on render, with #602 . I think it should fix this particular issue.
cc @aiordache

@vlcinsky
Copy link

I was testing this issue with 0.9.0-zeta1.

Things has changed, but there are still things to clarify.

Having volume:

    volumes:
    - "./db_tisapi:/var/lib/postgresql/data"
    - "./db_tisapi_init:/docker-entrypoint-initdb.d"

rendering results in:

    volumes:
    - type: bind
      source: /cnab/app/ttt.dockerapp/db_tisapi
      target: /var/lib/postgresql/data
    - type: bind
      source: /cnab/app/ttt.dockerapp/db_tisapi_init
      target: /docker-entrypoint-initdb.d

so it ignores current directory and assumes, that the relative folder is relative to folder /cnab/app.

This makes rendering of docker-compose.yml not usable for docker-compose command.

Possible solutions:

  • skip: skip supporting docker app render for docker-compose using volumes bound to relative folder. Call this use case as out of scope for docker app.
  • render-mode: Introduce option --render-mode with options docker-compose and app. docker-compose would respect relative folders, app would assume relative folders to be relative to /cnab/app. Default render-mode would be app.
  • volumes-root: Introduce option --volumes-root defaulting to /cnab/app.

I would prefer the render-mode solution as it brings real value to docker-compose users allowing to parametrize the application as needed.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

No branches or pull requests

5 participants