I have this docker-compose.yml:
version: \"3.1\"
services:
memcached:
image: memcached:alpine
container_name: universal-memcached2
redi
I recommend using Parallels (the best virtualisation for macOS). Then:
If you use VSCode, you can install SSH extension and it is fast enough for editing files. You can also access your website on macOS via virtual machine's IP address.
As mentioned in other answers, the issue comes down to the way Docker interacts with the file system on OSX.
I found a great article on how to make things a lot faster on OSX:
https://vivait.co.uk/labs/docker-for-mac-performance-using-nfs
From the article, the real solution is to change the file system to use NFS, but as I know nothing about Docker (it was set up for me at work), I opted to use an option available in newer versions of Docker
I added :delegated
to all of the options under volumes
in docker-compose.yml
. After restarting my containers, every was nearly twice as fast as before. Not as fast as native, but fast enough.
Example from article:
app:
build:
context: .
dockerfile: ./docker/app/Dockerfile
working_dir: /app
user: "www-data"
volumes:
- ./:/app:delegated
- ./:/another_folder:delegated
The NFS example is quite long and requires basically copying half of the article so I won't add it in, but this :delegated
solution is good place to start.
One option would be using http://docker-sync.io/ But you will not get the same performance as you would in a Linux-based machine.
This is know. Issue with docker and the Mac... they are not best buddies, but they can play with each other.
Add :cached
to the volumes and the slowness will be manageable.
As a matter of fact, Docker needs a plain Linux kernel to run. Unfortunately, Mac OS and Windows cannot provide this. Therefore, there is a client on Mac OS to run Docker. In addition to this, there is an abstraction layer between Mac OS kernel and applications (Docker containers) and the filesystems are not the same. Because of that, Docker runs on Mac OS slowly. You are not able to run the Docker on Mac OS like on Linux.
If I need to give some instances about real use-cases. I have the same machine. So, I use Symfony 4 on Docker v18 on Mac OS Mojave. This is my Symfony total execution time on Docker. (Obviously, it depends on your frontend and database queries but I try to enlighten you for main logic.)
As long as I use Symfony without Docker, the following is my total execution time.
Whereas, we could do some improvements to get better workspace. For example, you can use volumes like this,
volumes:
- .:/application:cached