{"id":13416561,"url":"https://github.com/codekitchen/dinghy","last_synced_at":"2025-12-16T21:13:03.053Z","repository":{"id":22889306,"uuid":"26237573","full_name":"codekitchen/dinghy","owner":"codekitchen","description":"faster, friendlier Docker on OS X. Deprecated.","archived":true,"fork":false,"pushed_at":"2019-04-16T17:34:23.000Z","size":419,"stargazers_count":2119,"open_issues_count":33,"forks_count":109,"subscribers_count":37,"default_branch":"master","last_synced_at":"2025-02-14T11:53:01.707Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/codekitchen.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-11-05T20:09:47.000Z","updated_at":"2025-02-11T21:31:26.000Z","dependencies_parsed_at":"2022-08-21T14:31:40.016Z","dependency_job_id":null,"html_url":"https://github.com/codekitchen/dinghy","commit_stats":null,"previous_names":[],"tags_count":48,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codekitchen%2Fdinghy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codekitchen%2Fdinghy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codekitchen%2Fdinghy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codekitchen%2Fdinghy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/codekitchen","download_url":"https://codeload.github.com/codekitchen/dinghy/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240075508,"owners_count":19744091,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-30T21:01:00.925Z","updated_at":"2025-12-16T21:13:02.662Z","avatar_url":"https://github.com/codekitchen.png","language":"Ruby","readme":"# dinghy\n\nDocker on OS X with batteries included, aimed at making a more pleasant local development experience.\nRuns on top of [docker-machine](https://github.com/docker/machine).\n\n  * Faster volume sharing using NFS rather than built-in virtualbox/vmware file shares. A medium-sized Rails app boots in 5 seconds, rather than 30 seconds using vmware file sharing, or 90 seconds using virtualbox file sharing.\n  * Filesystem events work on mounted volumes. Edit files on your host, and see guard/webpack/etc pick up the changes immediately.\n  * Easy access to running containers using built-in DNS and HTTP proxy.\n\nDinghy creates its own VM using `docker-machine`, it will not modify your existing `docker-machine` VMs.\n\nDinghy runs as a wrapper around `docker-machine`, shelling out to create the VM\nand using daemons to start the various services such as NFS and DNS.\n\n## PROJECT STATUS\n\n**TL;DR** I am still actively maintaining Dinghy, making small improvements and fixing issues. But it's unlikely that there will be any large new development efforts unless somebody else wants to step up and take them on. Docker for Mac is a great option for most, if not all, people.\n\nWhen we started the Dinghy project, Docker for Mac did not exist and there wasn't a great option for using Docker on MacOS easily with high-performance file sharing.\n\nThese days, Dinghy still has a performance advantage over Docker for Mac in some use cases where you are sharing lots of files from a host volume. But for the most part, you are fine just using Docker for Mac, you don't necessarily need Dinghy. There is a lot of discussion around the pros and cons in [this issue](https://github.com/codekitchen/dinghy/issues/166).\n\nDinghy also includes a HTTP(S) proxy and DNS server that can make developing web apps easier, especially if you switch between projects frequently. This proxy can now be used without Dinghy on top of Docker for Mac, see [the instructions in the dinghy-http-proxy README](https://github.com/codekitchen/dinghy-http-proxy).\n\n## FAQ and solutions to common problems\n\nBefore filing an issue, see the [FAQ](FAQ.md).\n\n## upgrading from vagrant\n\nIf you previously used a version of Dinghy that ran on top of Vagrant, [read this](UPGRADE_FROM_VAGRANT.md).\n\n## install\n\nFirst the prerequisites:\n\n1. OS X Yosemite (10.10) or higher\n1. [Homebrew](https://github.com/Homebrew/homebrew)\n1. Docker and Docker Machine. These can either be installed with Homebrew (`brew install docker docker-machine`), or using a package such as the Docker Toolbox.\n1. A Virtual Machine provider for Docker Machine. Currently supported options are:\n    * [xhyve](http://www.xhyve.org/) installed with [docker-machine-driver-xhyve](https://github.com/zchee/docker-machine-driver-xhyve#install). This is the recommended option, it is simpler to setup and appears to be more stable overall.\n    * [VirtualBox](https://www.virtualbox.org). Version 5.0+ is strongly recommended.\n    * [VMware Fusion](http://www.vmware.com/products/fusion).\n    * [Parallels](https://www.parallels.com/products/desktop/) installed with [docker-machine-parallels](https://github.com/Parallels/docker-machine-parallels).\n\nThen:\n\n    $ brew tap codekitchen/dinghy\n    $ brew install dinghy\n\nYou will need to install `docker` and `docker-machine` as well, either via Homebrew or the official Docker package downloads. To install with Homebrew:\n\n    $ brew install docker docker-machine\n\nYou can specify provider (`xhyve`, `virtualbox`, `vmware` or `parallels`), memory and CPU options when creating the VM. See available options:\n\n    $ dinghy help create\n\nThen create the VM and start services with:\n\n    $ dinghy create --provider xhyve\n\nOnce the VM is up, you'll get instructions to add some Docker-related\nenvironment variables, so that your Docker client can contact the Docker\nserver inside the VM. I'd suggest adding these to your .bashrc or\nequivalent.\n\nSanity check!\n\n    $ docker run --rm hello-world\n\n## CLI Usage\n\n```bash\n$ dinghy help\nCommands:\n  dinghy create          # create the docker-machine VM\n  dinghy destroy         # stop and delete all traces of the VM\n  dinghy halt            # stop the VM and services\n  dinghy help [COMMAND]  # Describe available commands or one specific command\n  dinghy ip              # get the VM's IP address\n  dinghy restart         # restart the VM and services\n  dinghy shellinit       # returns env variables to set, should be run like $(dinghy shellinit)\n  dinghy ssh [args...]   # ssh to the VM\n  dinghy status          # get VM and services status\n  dinghy up              # start the Docker VM and services\n  dinghy upgrade         # upgrade the boot2docker VM to the newest available\n  dinghy version         # display dinghy version\n```\n\n## DNS\n\nDinghy installs a DNS server listening on the private interface, which\nresolves \\*.docker to the Dinghy VM. For instance, if you have a running\ncontainer that exposes port 3000 to the host, and you like to call it\n`myrailsapp`, you can connect to it at `myrailsapp.docker` port 3000, e.g.\n`http://myrailsapp.docker:3000/` or `telnet myrailsapp.docker 3000`.\n\nYou can also connect back to your host OS X machine from within a docker\ncontainer using the hostname `hostmachine.docker`. This connects to the virtual\nnetwork interface, so any services running on the host machine that you want\nreachable from docker will have to be listening on this interface.\n\n## HTTP proxy\n\nDinghy will run a HTTP proxy inside a docker container in the VM, giving you\neasy access to web apps running in other containers.\n\nFor docker-compose projects, hostnames will be automatically generated based on\nthe project and service names. For instance, a \"web\" service in a \"myapp\"\ndocker-compose project will be automatically made available at\nhttp://web.myapp.docker\n\nHostnames can also be manually defined, by setting the `VIRTUAL_HOST`\nenvironment variable on a container.\n\nThe proxy has basic SSL support as well.\n\nSee the [dinghy-http-proxy documentation](https://github.com/codekitchen/dinghy-http-proxy#dinghy-http-proxy)\nfor more details on how to configure and use the proxy. \n\nAdvanced proxy configuration can be placed in a file at ```HOME/.dinghy/proxy.conf```. Details can be found in jwilder's [nginx-proxy](https://github.com/jwilder/nginx-proxy#custom-nginx-configuration) project.\n\n\n\n## Preferences\n\nDinghy creates a preferences file under ```HOME/.dinghy/preferences.yml```, which can be used to override default options. This is an example of the default generated preferences:\n\n```\n:preferences:\n  :proxy_disabled: false\n  :fsevents_disabled: false\n  :create:\n    provider: virtualbox\n```\n\nIf you want to override the Dinghy machine name (e.g. to change it to 'default' so it can work with Kitematic), it can be changed here. First, destroy your current dinghy VM and then add the following to your preferences.yml file:\n\n```\n:preferences:\n.\n.\n.\n  :machine_name: default\n```\n\nSame goes for the default Dinghy dns resolver '\\*.docker' it can be changed to '\\*.dev' for example:\n\n```\n:preferences:\n.\n.\n.\n  :dinghy_domain: dev\n```\n\n## A note on NFS sharing\n\nDinghy shares your home directory (`/Users/\u003cyou\u003e`) over NFS, using a\nprivate network interface between your host machine and the Dinghy\nDocker Host. This sharing is done using a separate NFS daemon, not the\nsystem NFS daemon.\n\nBe aware that there isn't a lot of security around NFSv3 file shares.\nWe've tried to lock things down as much as possible (this NFS daemon\ndoesn't even listen on other interfaces, for example).\n\n### Custom NFS Mount Location\n\nYou can change the shared folder by setting the `DINGHY_HOST_MOUNT_DIR` and `DINGHY_GUEST_MOUNT_DIR` environment variables before starting the dinghy VM. Usually you'll want to set both vars to the same value. For instance if you want to share `/code/projects` over NFS rather than `/Users/\u003cyou\u003e`, in bash:\n\n```bash\n$ dinghy halt\n$ export DINGHY_HOST_MOUNT_DIR=/code/projects\n$ export DINGHY_GUEST_MOUNT_DIR=/code/projects\n$ dinghy up\n```\n\nThere is an open issue for persisting this in the `~/.dinghy/preferences.yml` file, and allowing multiple dirs to be exported: https://github.com/codekitchen/dinghy/issues/169\n\n### Custom certficate directory\n\nYou can change the default certificates directory `~/.dinghy/certs` by setting the `DINGHY_CERT_PATH` environment variable before starting the dinghy VM. This is useful if you have a custom NFS Mount location and your home directory is no more shared, in bash:\n\n```bash\n$ dinghy halt\n$ export DINGHY_CERT_PATH=/code/projects/certs\n$ dinghy up\n```\n\n## Upgrading\n\nIf you didn't originally install Dinghy as a tap, you'll need to switch to the\ntap to pull in the latest release:\n\n    $ brew tap codekitchen/dinghy\n\nTo update Dinghy itself, run:\n\n    $ dinghy halt\n    $ brew upgrade dinghy unfs3\n    $ dinghy up\n\nTo update the Docker VM, run:\n\n    $ dinghy upgrade\n\nThis will run `docker-machine upgrade` and then restart the dinghy services.\n\n### Prereleases\n\nYou can install Dinghy's master branch with:\n\n    $ dinghy halt\n    $ brew reinstall --HEAD dinghy\n    $ dinghy up\n\nThis branch may be less stable, so this isn't recommended in general.\n\n## Built on\n\n - https://github.com/docker/machine\n - https://github.com/unfs3/unfs3\n - https://github.com/Homebrew/homebrew\n - http://www.thekelleys.org.uk/dnsmasq/doc.html\n - https://github.com/jwilder/nginx-proxy\n","funding_links":[],"categories":["Development with Docker","Docker","Ruby"],"sub_categories":["Development Environment"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodekitchen%2Fdinghy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcodekitchen%2Fdinghy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodekitchen%2Fdinghy/lists"}