diff --git a/DOCUMENTATION/content/documentation/index.md b/DOCUMENTATION/content/documentation/index.md index 8dd89fa0..bcda7649 100644 --- a/DOCUMENTATION/content/documentation/index.md +++ b/DOCUMENTATION/content/documentation/index.md @@ -5,6 +5,8 @@ weight: 3 --- + + ## List current running Containers ```bash @@ -153,88 +155,8 @@ You might use the `--no-cache` option if you want full rebuilding (`docker-compo -
- - -## Speed up with docker-sync - -Docker on the Mac [is slow](https://github.com/docker/for-mac/issues/77), at the time of writing. Especially for larger projects, this can be a problem. The problem is [older than March 2016](https://forums.docker.com/t/file-access-in-mounted-volumes-extremely-slow-cpu-bound/8076) - as it's a such a long-running issue, we're including it in the docs here. - -In simple terms, docker-sync creates a docker container with a copy of all the application files that can be accessed very quickly from the other containers. -On the other hand, docker-sync runs a process on the host machine that continuously tracks and updates files changes from the host to this intermediate container. - -Out of the box, it comes pre-configured for OS X, but using it on Windows is very easy to set-up by modifying the `DOCKER_SYNC_STRATEGY` on the `.env` - -#### Usage - -Laradock comes with `sync.sh`, an optional bash script, that automates installing, running and stopping docker-sync. Note that to run the bash script you may need to change the permissions `chmod 755 sync.sh` - -1) Configure your Laradock environment as you would normally do and test your application to make sure that your sites are running correctly. - -2) Make sure to set `DOCKER_SYNC_STRATEGY` on the `.env`. Read the [syncing strategies](https://github.com/EugenMayer/docker-sync/wiki/8.-Strategies) for details. -``` -# osx: 'native_osx' (default) -# windows: 'unison' -# linux: docker-sync not required - -DOCKER_SYNC_STRATEGY=native_osx -``` - -2) Install the docker-sync gem on the host-machine: -```bash -./sync.sh install -``` -3) Start docker-sync and the Laradock environment. -Specify the services you want to run, as you would normally do with `docker-compose up` -```bash -./sync.sh up nginx mysql -``` -Please note that the first time docker-sync runs, it will copy all the files to the intermediate container and that may take a very long time (15min+). -4) To stop the environment and docker-sync do: -```bash -./sync.sh down -``` - -#### Setting up Aliases (optional) - -You may create bash profile aliases to avoid having to remember and type these commands for everyday development. -Add the following lines to your `~/.bash_profile`: - -```bash -alias devup="cd /PATH_TO_LARADOCK/laradock; ./sync.sh up nginx mysql" #add your services -alias devbash="cd /PATH_TO_LARADOCK/laradock; ./sync.sh bash" -alias devdown="cd /PATH_TO_LARADOCK/laradock; ./sync.sh down" -``` - -Now from any location on your machine, you can simply run `devup`, `devbash` and `devdown`. - - -#### Additional Commands - -Opening bash on the workspace container (to run artisan for example): - ```bash - ./sync.sh bash - ``` -Manually triggering the synchronization of the files: -```bash -./sync.sh sync -``` -Removing and cleaning up the files and the docker-sync container. Use only if you want to rebuild or remove docker-sync completely. The files on the host will be kept untouched. -```bash -./sync.sh clean -``` - -**Additional Notes:** - -- You may run laradock with or without docker-sync at any time using with the same `.env` and `docker-compose.yml`, because the configuration is overridden automatically when docker-sync is used. -- You may inspect the `sync.sh` script to learn each of the commands and even add custom ones. -- If a container cannot access the files on docker-sync, you may need to set a user on the Dockerfile of that container with an id of 1000 (this is the UID that nginx and php-fpm have configured on laradock). Alternatively, you may change the permissions to 777, but this is **not** recommended. - -Visit the [docker-sync documentation](https://github.com/EugenMayer/docker-sync/wiki) for more details. -
- ## Add more Software (Docker Images) To add an image (software), just edit the `docker-compose.yml` and add your container details, to do so you need to be familiar with the [docker compose file syntax](https://docs.docker.com/compose/compose-file/). @@ -1494,7 +1416,11 @@ Moving from Docker Toolbox (VirtualBox) to Docker Native (for Mac/Windows). Requ ## Improve speed on MacOS -Sharing code into Docker containers with osxfs have very poor performance compared to Linux. Likely there are some workarounds: +Docker on the Mac [is slow](https://github.com/docker/for-mac/issues/77), at the time of writing. Especially for larger projects, this can be a problem. The problem is [older than March 2016](https://forums.docker.com/t/file-access-in-mounted-volumes-extremely-slow-cpu-bound/8076) - as it's a such a long-running issue, we're including it in the docs here. + +So since sharing code into Docker containers with osxfs have very poor performance compared to Linux. Likely there are some workarounds: + + ### Workaround A: using dinghy @@ -1514,9 +1440,99 @@ Quick Setup giude, (we recommend you check their docs) - +
+ ### Workaround B: using d4m-nfs +You can use the d4m-nfs solution in 2 ways, one is using the Laradock built it integration, and the other is using the tool separatly. Below is show case of both methods: + + +#### B.1: using the built in d4m-nfs integration + +In simple terms, docker-sync creates a docker container with a copy of all the application files that can be accessed very quickly from the other containers. +On the other hand, docker-sync runs a process on the host machine that continuously tracks and updates files changes from the host to this intermediate container. + +Out of the box, it comes pre-configured for OS X, but using it on Windows is very easy to set-up by modifying the `DOCKER_SYNC_STRATEGY` on the `.env` + +##### Usage + +Laradock comes with `sync.sh`, an optional bash script, that automates installing, running and stopping docker-sync. Note that to run the bash script you may need to change the permissions `chmod 755 sync.sh` + +1) Configure your Laradock environment as you would normally do and test your application to make sure that your sites are running correctly. + +2) Make sure to set `DOCKER_SYNC_STRATEGY` on the `.env`. Read the [syncing strategies](https://github.com/EugenMayer/docker-sync/wiki/8.-Strategies) for details. +``` +# osx: 'native_osx' (default) +# windows: 'unison' +# linux: docker-sync not required + +DOCKER_SYNC_STRATEGY=native_osx +``` + +2) Install the docker-sync gem on the host-machine: +```bash +./sync.sh install +``` +3) Start docker-sync and the Laradock environment. +Specify the services you want to run, as you would normally do with `docker-compose up` +```bash +./sync.sh up nginx mysql +``` +Please note that the first time docker-sync runs, it will copy all the files to the intermediate container and that may take a very long time (15min+). +4) To stop the environment and docker-sync do: +```bash +./sync.sh down +``` + +##### Setting up Aliases (optional) + +You may create bash profile aliases to avoid having to remember and type these commands for everyday development. +Add the following lines to your `~/.bash_profile`: + +```bash +alias devup="cd /PATH_TO_LARADOCK/laradock; ./sync.sh up nginx mysql" #add your services +alias devbash="cd /PATH_TO_LARADOCK/laradock; ./sync.sh bash" +alias devdown="cd /PATH_TO_LARADOCK/laradock; ./sync.sh down" +``` + +Now from any location on your machine, you can simply run `devup`, `devbash` and `devdown`. + + +##### Additional Commands + +Opening bash on the workspace container (to run artisan for example): + ```bash + ./sync.sh bash + ``` +Manually triggering the synchronization of the files: +```bash +./sync.sh sync +``` +Removing and cleaning up the files and the docker-sync container. Use only if you want to rebuild or remove docker-sync completely. The files on the host will be kept untouched. +```bash +./sync.sh clean +``` + + +##### Additional Notes + +- You may run laradock with or without docker-sync at any time using with the same `.env` and `docker-compose.yml`, because the configuration is overridden automatically when docker-sync is used. +- You may inspect the `sync.sh` script to learn each of the commands and even add custom ones. +- If a container cannot access the files on docker-sync, you may need to set a user on the Dockerfile of that container with an id of 1000 (this is the UID that nginx and php-fpm have configured on laradock). Alternatively, you may change the permissions to 777, but this is **not** recommended. + +Visit the [docker-sync documentation](https://github.com/EugenMayer/docker-sync/wiki) for more details. + + + + + + + + +
+ +#### B.2: using the d4m-nfs tool + [D4m-nfs](https://github.com/IFSight/d4m-nfs) automatically mount NFS volume instead of osxfs one. 1) Update the Docker [File Sharing] preferences: @@ -1556,17 +1572,10 @@ docker-compose up ... -### Other good workarounds: - -- [docker-sync](https://github.com/EugenMayer/docker-sync) -- Add more here.. -More details about this issue [here](https://github.com/docker/for-mac/issues/77). - -