Closed jleetutorial closed 7 years ago
Did you set COMPOSE_CONVERT_WINDOWS_PATHS
?
We made a .env file in same directory as docker-compose.yml file
and added COMPOSE_CONVERT_WINDOWS_PATHS=1
we have also tried this to be true.
but still getting below error.
ABHISHEK@WindowsAbhi MINGW64 ~/Desktop/docker/dockerapp-releases/dockerapp-0.4/dockerapp-0.4 $ docker-compose up dockerapp04_redis_1 is up-to-date Creating dockerapp04_dockerapp_1
ERROR: for dockerapp Cannot create container for service dockerapp: Invalid bind mount spec "C:\Users\ABHISHEK\Desktop\docker\dockerapp-releases\dockerapp-0.4\do ckerapp-0.4\app:/app:rw": Invalid volume specification: 'C:\Users\ABHISHEK\Desktop\docker\dockerapp-releases\dockerapp-0.4\dockerapp-0.4\app:/app:rw' ←[31mERROR←[0m: Encountered errors while bringing up the project.
Is there a better way to do COMPOSE_CONVERT_WINDOWS_PATHS or any other workaround.
Just type "export COMPOSE_CONVERT_WINDOWS_PATHS=1" and it will work until reboot.
Any reason this was closed? I've created a system environment variable and tried the .env file but still no avail.
It's not closed, but that particular issue should be resolved. Make sure your Compose version is up to date and your docker-compose.yml is correct.
I have the same issue on Windows 10. I use docker-compose version 1.11.2
, build f963d76f and Docker version 17.03.1-ce
, build c6d412e and this repo https://github.com/b00giZm/docker-compose-nodejs-examples/tree/master/00-basic-express-generator with correct Dockerfile and docker-compose.yml when i run docker-inspect i get this info: https://www.pastiebin.com/593bc096af354 but when i go inside to container and run ls /src i get this:
root@930bfd8a7df0:/src# ls
node_modules package.json
i can't find app directory inside container. But when i run:
PS D:\00-basic-express-generator> docker run --rm -v c:/Users:/data alpine ls /data
Administrator
All Users
Default
Default User
volumes is working great
Is there any solution how to fix this bug in docker-compose?
One and a half months... is there a solution yet?
Running Docker 17.06.0-ce-win19 (12801) on Windows 10 using Visual Studio 2017 I ran into this thing. I saw the "create e .env file" tip but on Window you cannot have a file with no name?
Yes, you can. At least on Windows 10.
@rolandwolters You cannot have a file without a filename in Explorer. But you can open a Powershell, navigate to your project directory and type:
mv e.env .env
If you're still having issues, please make sure your shared drives are configured properly: https://blogs.msdn.microsoft.com/stevelasker/2016/06/14/configuring-docker-for-windows-volumes/
It worked for me with COMPOSE_CONVERT_WINDOWS_PATHS=1
, but I had to shut down all containers docker-compose stop
, not just the one who uses it.
I've used , in a CMD window, SET COMPOSE_CONVERT_WINDOWS_PATHS=1 and it suddenly starting working. Remember to open a new CMD window.
I just discovered the "Reset Credentials..." button in the Shared Drive settings, which solved the issue for me. In my case the volume suddenly stopped working after disabling+enabling Hyper-V. Resetting the credentials for the shared drives fixed it again
@jaspervandaele, thanks a lot, this fixed my issue too. The error message Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type
I was facing was so generic that I was wondering what was wrong. As I changed my Windows credentials recently, this is what caused this error. I wished there was something more explicit in case the mounted volume cannot be accessed at all
@rolandwolters You can bypass the Windows Explorer naming restriction by adding an extra .
at the end. So renaming a file and typing ".env." results in .env
, ".gitignore." becomes .gitignore
, etc.
@jaspervandaele thanks for that- solved it for me.
@gersondinis there is no option in settings for Shared Drives when Docker CE is running in Windows mode...unless I'm missing something using edge release:
Try to change from edge version to stable version on Daemon tab. You should see something like this: https://cdn-enterprise.discourse.org/docker/uploads/default/optimized/2X/d/df575b41215fb89a1f79f6bf8f0864b7366e9955_1_690x312.png
If it doesn't, try to upgrade/update your Docker for Windows.
@gersondinis Thanks!, that solved my problem!
@gersondinis latest version of CE and stable version...this is all I get:
@gersondinis Sir your a life saver! for me it wasnt the environment variable, it was due to changing windows password, thanks you sir!
This did not solve the problem for me. I still run into issues trying to mount files to my docker-compose
I'm also having problems mounting volumes on Windows containers
(it works fine in Linux containers
).
I tried everything in this thread. I also tried relative and absolute paths.
Whenever I try to mount volumes on Windows Containers I get:
ERROR: Cannot create container for service builder: invalid volume specification: 'D:\project\docker-env\dist:/dist:rw'
I don't think /dist
is a valid Windows path.
On Command Line: "_set COMPOSE_CONVERT_WINDOWSPATHS=1"; Restart Docker for Windows; Go to Docker for Windows settings > Shared Drives > Reset credentials > select drive > Apply; Reopen Command Line; Kill the Containers; Rerun the Containers.
- On Command Line: "_set COMPOSE_CONVERT_WINDOWSPATHS=1";
- Restart Docker for Windows;
- Go to Docker for Windows settings > Shared Drives > Reset credentials > select drive > Apply;
- Reopen Command Line;
- Kill the Containers;
- Rerun the Containers.
You're the man, it solved the problem, thank you
This settings in the docker-compose file work well:
volumes:
- type: bind
source: ./source_local_directory
target: c:\target_directory
bind:
propagation: cached
@gersondinis there is no option in settings for Shared Drives when Docker CE is running in Windows mode...unless I'm missing something using edge release:
you are not seeing it because you are using window container, you need to switch to linux container
Will $PWD
also work with COMPOSE_CONVERT_WINDOWS_PATHS=1 ? e.g
drupal:
driver: local
driver_opts:
type: none
device: $PWD/code/drupal
o: bind
I was having this issue (at least I think it's the same issue), but since I wanted to keep Hyper-V off in order to use accelerated emulation for Intel + Android, I couldn't use the Docker for Windows GUI app and look for those Shared Drives settings that @shin- mentioned, because I was using docker-machine.exe + VirtualBox. So what I had to do in this particular case instead was this: https://forums.docker.com/t/how-to-share-volumes-and-or-drives-using-docker-machine-on-windows-not-beta/20170/2
& "C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" sharedfolder add default --name "shared" --hostpath "C:/your/shared/folder/" --automount
And then in docker-compose.yml
:
volumes:
- /shared:/some/dir/in/the/container
I think this is more like a workaround and not a full solution, but I hope somebody finds it helpful.
TL;DR: If you're using VirtualBox and not Docker for Windows, try mounting the drives in VirtualBox with VBoxManage.exe
I'm using windows subsystem for linux, running the docker-host on the windows machine exposed via non-TLS port 2375.
I tried what @stavrogin mentioned, but it did not work. My docker-compose.yml mounts a file into the container like this:
version: '2'
services:
nginx:
image: nginx:latest
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
ports:
- 80:80
- 443:443
After running docker-compose up i get " Are you trying to mount a directory onto a file (or vice-versa)"
Starting ea_nginx_1 ...
Starting ea_grafana_1 ...
Starting ea_influxdb_1 ...
Starting ea_collectd_1 ... error
ERROR: for ea_collectd_1 Cannot start service collectd: b'OCI runtime create failed: container_linux.go:344: starting container process caused "process_linux.go:424: containeStarting ea_nginx_1 ... error947aaf139ee40bd985d078112919c30/merged\\\\\\" at \\\\\\"/var/lib/docker/overlay2/7a737fdd9749373317586ea8c17258c8b947aaf139ee40bd985d078112919c30/merged/etc/collectd/collectd.conf\\\\\\" caused \\\\\\"not a directory\\\\\\"\\"": unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is
the expected type'
ERROR: for ea_nginx_1 Cannot start service nginx: b'OCI runtime create failed: container_linux.go:344: starting container process caused "process_linux.go:424: container init caused \\"rootfs_linux.go:58: mounting \\\\\\"/mnt/d/Daten/workspace/ea/nginx.conf\\\\\\" to rootfs \\\\\\"/var/lib/docker/overlay2/db2c014e375524c7b6bf97cc874915d023c25b8e8f
I tried placing an .env file within the directory
ben@ben-desktop /d/Daten/workspace/ea master ● ls -al
total 60
drwxrwxrwx 1 ben ben 4096 Feb 3 09:47 .
drwxrwxrwx 1 ben ben 4096 Feb 3 08:44 ..
-rwxrwxrwx 1 ben ben 34197 Feb 3 08:37 collectd.conf
-rwxrwxrwx 1 ben ben 765 Feb 3 09:32 docker-compose.yml
-rwxrwxrwx 1 ben ben 31 Feb 3 09:52 .env
drwxrwxrwx 1 ben ben 4096 Feb 3 10:03 .git
-rwxrwxrwx 1 ben ben 2641 Feb 3 08:37 influxdb.conf
-rwxrwxrwx 1 ben ben 1086 Feb 3 08:37 LICENSE
-rwxrwxrwx 1 ben ben 169 Feb 3 09:26 nginx.conf
-rwxrwxrwx 1 ben ben 629 Feb 3 08:37 README.md
-rwxrwxrwx 1 ben ben 8577 Feb 3 08:37 types.db
ben@ben-desktop /d/Daten/workspace/ea master ●
But still cannot start the containers from my Windows machine. Running the exact same configuration on a linode works as is. What am I missing out here?
Edit: Moving the repository within the subsystem /home/ben/ea did also not resolve it
Edit: I fixed it with changing the Volumes from
nginx:
image: nginx:latest
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
ports:
- 80:80
- 443:443
to
nginx:
image: nginx:latest
volumes:
- ${PWD}/nginx.conf:/etc/nginx/nginx.conf
ports:
- 80:80
- 443:443
using docker toolbox on windows this way i could solve my the issue https://medium.com/@Charles_Stover/fixing-volumes-in-docker-toolbox-4ad5ace0e572
docker-compose.yml:
version: '3' services: web: build: . ports:
If you're still having issues, please make sure your shared drives are configured properly: https://blogs.msdn.microsoft.com/stevelasker/2016/06/14/configuring-docker-for-windows-volumes/
and this COMPOSE_CONVERT_WINDOWS_PATHS=1
Worked for me
This settings in the docker-compose file work well:
volumes: - type: bind source: ./source_local_directory target: c:\target_directory bind: propagation: cached
Thank you, it is working.
BTW, please keep in mind you should use at least version 3.3 of docker-compose YAML notation.
This settings in the docker-compose file work well:
volumes: - type: bind source: ./source_local_directory target: c:\target_directory bind: propagation: cached
This fixed it for me too...
What about ownership between windows docker host and container users, assuming docker-compose volume mounts correctly, the drivers do not seem to exist to translate ownership. Would we need to chown after each docker-compose up if we wanted to edit the mounted data on windows, for example?
I just discovered the "Reset Credentials..." button in the Shared Drive settings, which solved the issue for me. In my case the volume suddenly stopped working after disabling+enabling Hyper-V. Resetting the credentials for the shared drives fixed it again
Can someone elaborate this please? I don't understand where can I find these settings.
I just discovered the "Reset Credentials..." button in the Shared Drive settings, which solved the issue for me. In my case the volume suddenly stopped working after disabling+enabling Hyper-V. Resetting the credentials for the shared drives fixed it again
Can someone elaborate this please? I don't understand where can I find these settings.
On the latest Docker for Windows GUI these settings are removed, I guess because this version is not supposed to loose credentials
When running docker-compose up, we get this error:
The docker-compose file is attached below
We get the error both on Docker for Windows and Docker toolbox running on Windows.