[
  {
    "path": ".github/FUNDING.yml",
    "content": "# These are supported funding model platforms\n\ngithub: eugenmayer\npatreon: eugenmayer\n"
  },
  {
    "path": ".gitignore",
    "content": ".idea/workspace.xml\n.idea/composerJson.xml\n.docker-sync\n*/.env\n"
  },
  {
    "path": ".idea/compiler.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"CompilerConfiguration\">\n    <resourceExtensions />\n    <wildcardResourcePatterns>\n      <entry name=\"!?*.java\" />\n      <entry name=\"!?*.form\" />\n      <entry name=\"!?*.class\" />\n      <entry name=\"!?*.groovy\" />\n      <entry name=\"!?*.scala\" />\n      <entry name=\"!?*.flex\" />\n      <entry name=\"!?*.kt\" />\n      <entry name=\"!?*.clj\" />\n      <entry name=\"!?*.aj\" />\n    </wildcardResourcePatterns>\n    <annotationProcessing>\n      <profile default=\"true\" name=\"Default\" enabled=\"false\">\n        <processorPath useClasspath=\"true\" />\n      </profile>\n    </annotationProcessing>\n  </component>\n</project>"
  },
  {
    "path": ".idea/copyright/profiles_settings.xml",
    "content": "<component name=\"CopyrightManager\">\n  <settings default=\"\" />\n</component>"
  },
  {
    "path": ".idea/docker-sync-boilerplate.iml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<module type=\"JAVA_MODULE\" version=\"4\">\n  <component name=\"NewModuleRootManager\" inherit-compiler-output=\"true\">\n    <exclude-output />\n    <content url=\"file://$MODULE_DIR$\" />\n    <orderEntry type=\"inheritedJdk\" />\n    <orderEntry type=\"sourceFolder\" forTests=\"false\" />\n  </component>\n</module>"
  },
  {
    "path": ".idea/encodings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"Encoding\">\n    <file url=\"PROJECT\" charset=\"UTF-8\" />\n  </component>\n</project>"
  },
  {
    "path": ".idea/misc.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"MavenImportPreferences\">\n    <option name=\"generalSettings\">\n      <MavenGeneralSettings>\n        <option name=\"mavenHome\" value=\"Bundled (Maven 3)\" />\n      </MavenGeneralSettings>\n    </option>\n  </component>\n  <component name=\"ProjectRootManager\" version=\"2\" languageLevel=\"JDK_1_6\" default=\"true\" />\n  <component name=\"masterDetails\">\n    <states>\n      <state key=\"ProjectJDKs.UI\">\n        <settings>\n          <last-edited>1.7</last-edited>\n          <splitter-proportions>\n            <option name=\"proportions\">\n              <list>\n                <option value=\"0.2\" />\n              </list>\n            </option>\n          </splitter-proportions>\n        </settings>\n      </state>\n    </states>\n  </component>\n</project>"
  },
  {
    "path": ".idea/modules.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"ProjectModuleManager\">\n    <modules>\n      <module fileurl=\"file://$PROJECT_DIR$/.idea/docker-sync-boilerplate.iml\" filepath=\"$PROJECT_DIR$/.idea/docker-sync-boilerplate.iml\" />\n    </modules>\n  </component>\n</project>"
  },
  {
    "path": ".idea/vcs.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"VcsDirectoryMappings\">\n    <mapping directory=\"\" vcs=\"Git\" />\n  </component>\n</project>"
  },
  {
    "path": "README.md",
    "content": "This is a boilerplate for [docker-sync](https://github.com/EugenMayer/docker_sync).\nEither as a starting point for your configuration or to try out what docker-sync offers in terms of performance and the toolchain in practical.\n\nIf you have any issues, create an issue at [docker-sync](https://github.com/EugenMayer/docker_sync)\n\n**Start with**\n\n 1) Install docker-sync, if you did not yet\n\n```\ngem install docker-sync\n```\n\nThere may be other dependencies that you will have to install but the `docker-sync-stack start` command should help with that. Known dependencies for Mac include: unison, macfsevent, fswatch. These are either installed automatically or you may have to `brew install` them.\n\n 2) Now get the boilerplate\n```\ngit clone https://github.com/EugenMayer/docker-sync-boilerplate\ncd docker-sync-boilerplate\n```\n\n 3) Now start the sync, first choose the boilerplate either advanced, dynamic-configuration-dotnev, rsync, simplest, unison, unison-ftp-user, or unison-root-user. See [strategies](https://docker-sync.readthedocs.io/en/latest/advanced/sync-strategies.html) to understand the important differences\n\n---\n\n## Examples\n\nFor example rsync\n```\ncd default\ndocker-sync-stack start\n```\nThis will start the sync, and start your app-stack defined by in the docker-compose file. All in one step\n\n---\n\nIf you wonder, how you would keep the docker-compose.yml portable, see splitted-compose (there is an example in the advanced example of this). The changes for docker-sync are incorporated into an overlay-docker-compose file\nIn this case you do:\n\n```\n# To run development and mount your watched volume.\ncd advanced\ndocker-sync-stack start\n\n# Production would run docker-compose without mounting a watched volume.\ncd advanced/docker-compose\ndocker-compose up -d\n```\n\nMore about this in [the wiki](https://docker-sync.readthedocs.io/en/latest/getting-started/configuration.html?highlight=portable#portable-docker-compose-yml)\n\n---\n\nFor example __dynamic-configuration-dotnev__ you will need to __copy__ `.env.dist` to `.env`\n\n```\ncd dynamic-configuration-dotnev\ncp .env.dist .env\n## Change your settings to whatever you want and then run docker-sync.\ndocker-sync-stack start\n```\n\nAnd after that start things as described above\n\n\n## Reference\n\nIf you want to know, what options you actually have, see the [configuration-reference](https://docker-sync.readthedocs.io/en/latest/getting-started/configuration.html)\n"
  },
  {
    "path": "advanced/app/index.html",
    "content": "Some random HTML file hereasdasd\nNEW\n"
  },
  {
    "path": "advanced/docker-compose/docker-compose-dev.yml",
    "content": "# this is our development docker-compose building on top of the prodicker docker-compose, just mounting\n# the sync image - not redefining anything else\n\nversion: \"2\"\nservices:\n  app-advanced:\n    volumes_from:\n      - container:advanced-sync:nocopy # will be mounted on /var/www\n\n# that the important thing\nvolumes:\n  advanced-sync:\n    external: true\n"
  },
  {
    "path": "advanced/docker-compose/docker-compose.yml",
    "content": "# This is our production compose file - not changed for docker-sync or similar\n\nversion: \"2\"\nservices:\n  app-advanced:\n    image: alpine\n    command: ['watch', '-n3', 'cat /var/www/index.html']\n\n"
  },
  {
    "path": "advanced/docker-sync.yml",
    "content": "version: \"2\"\n\noptions:\n  compose-file-path: './docker-compose/docker-compose.yml'\n  compose-dev-file-path: './docker-compose/docker-compose-dev.yml'\n  verbose: true # make the whole sync verbose\nsyncs:\n  advanced-sync: #tip: add -sync and you keep consistent names as a convention\n    src: './app'\n    sync_host_ip: 'auto'\n    sync_host_port: 10872\n    sync_userid: '1001'\n    watch_args: '-v' # make watching verbose\n\n"
  },
  {
    "path": "default/app/index.html",
    "content": "inital, now change app/index.html and see if this will change me\nassa\n"
  },
  {
    "path": "default/docker-compose-dev.yml",
    "content": "# this is our development docker-compose building on top of the production docker-compose, just mounting\n# the sync image - not redefining anything else\n\nversion: \"2\"\nservices:\n  app-native-osx:\n    volumes:\n      - appcode-native-osx-sync:/var/www:nocopy # nocopy is important\n\n# that the important thing\nvolumes:\n  appcode-native-osx-sync:\n    external: true\n"
  },
  {
    "path": "default/docker-compose.yml",
    "content": "# This is our production compose file - not changed for docker-sync or similar\n\nversion: \"2\"\nservices:\n  app-native-osx:\n    image: alpine\n    command: 'watch -n3 cat /var/www/index.html'\n"
  },
  {
    "path": "default/docker-sync.yml",
    "content": "version: \"2\"\n\noptions:\n  verbose: true\nsyncs:\n  appcode-native-osx-sync: # tip: add -sync and you keep consistent names as a convention\n    src: './app'\n    # sync_strategy: 'native_osx' # not needed, this is the default now\n    sync_excludes: ['ignored_folder', '.ignored_dot_folder']\n"
  },
  {
    "path": "default_monit/app/index.html",
    "content": "inital, now change app/index.html and see if this will change me\n"
  },
  {
    "path": "default_monit/docker-compose-dev.yml",
    "content": "# this is our development docker-compose building on top of the production docker-compose, just mounting\n# the sync image - not redefining anything else\n\nversion: \"2\"\nservices:\n  app-native-osx:\n    volumes:\n      - appcode-native-osx-sync:/var/www:nocopy # nocopy is important\n\n# that the important thing\nvolumes:\n  appcode-native-osx-sync:\n    external: true\n"
  },
  {
    "path": "default_monit/docker-compose.yml",
    "content": "# This is our production compose file - not changed for docker-sync or similar\n\nversion: \"2\"\nservices:\n  app-native-osx:\n    image: alpine\n    command: ['watch', '-n3', 'cat /var/www/index.html']\n"
  },
  {
    "path": "default_monit/docker-sync.yml",
    "content": "version: \"2\"\n\noptions:\n  verbose: true\nsyncs:\n  appcode-native-osx-sync: # tip: add -sync and you keep consistent names as a convention\n    src: './app'\n    # sync_strategy: 'native_osx' # not needed, this is the default now\n    sync_excludes: ['ignored_folder', '.ignored_dot_folder']\n\n    monit_enable: true\n\n    # increase tolerance of high cpu if regular syncing uses a lot cpu\n    monit_interval: 10\n    monit_high_cpu_cycles: 6\n"
  },
  {
    "path": "default_with_user/docker-compose-dev.yml",
    "content": "# this is our development docker-compose building on top of the production docker-compose, just mounting\n# the sync image - not redefining anything else\n\nversion: \"2\"\nservices:\n  app-native-osx:\n    volumes:\n      - appcode-native-osx-sync:/var/www:nocopy # will be mounted on /var/www\n\n# that the important thing\nvolumes:\n  appcode-native-osx-sync:\n    external: true\n"
  },
  {
    "path": "default_with_user/docker-compose.yml",
    "content": "# This is our production compose file - not changed for docker-sync or similar\n\nversion: \"2\"\nservices:\n  app-native-osx:\n    image: alpine\n    command: ['watch', '-n3', 'cat /var/www/index.html']\n"
  },
  {
    "path": "default_with_user/docker-sync.yml",
    "content": "version: \"2\"\n\noptions:\n  verbose: true\nsyncs:\n  appcode-native-osx-sync: # tip: add -sync and you keep consistent names as a convention\n    src: './app'\n    sync_userid: 33\n    # sync_strategy: 'native_osx' # not needed, this is the default now\n    sync_excludes: ['ignored_folder', '.ignored_dot_folder']\n"
  },
  {
    "path": "docker-compose-only/docker-compose-dev.yml",
    "content": "# This is our development docker-compose file, building on top of the prod one.\n# This file adds a synchronisation between ./app and /var/www, that has the same\n# performance characteristics as the default native_osxfs scheme defined in\n# ../default/.\n# This example configuration runs the same docker image as ../default, with the\n# same environment. It does not need a docker-sync daemon running on your host\n# though, so you can bring up your development environment using\n# `docker-compose up -d` without first running `docker-sync start`. If you wish\n# to read the logs of the sync process, use `docker-compose logs app-syncer`.\n#\n# If you have a native_osxfs based docker-sync configuration that you want to\n# turn into a docker-compose only configuration, run `docker-sync start` and\n# then use `docker inspect -f '{{ .Mounts }}' $container_id` and\n# `docker exec $container_id env` to work out the elements needed to create a\n# docker-compose based container definition.\n\nversion: \"2\"\nservices:\n  app-docker-compose-only:\n    volumes:\n      # If you wanted to do this via docker-for-mac's default osxfs mounts, you\n      # would simply write - ./app:/var/www. In our case, we want to\n      # improve our filesystem performance, by adding unison as a layer of\n      # indirection. To do this, we create a named volume (\n      # 'app-docker-compose-only-sync' by convention, to avoid clashing with\n      # other named volumes) and then start a second docker container which\n      # runs unison to sync ./app with app-docker-compose-only-sync.\n      - app-docker-compose-only-sync:/var/www:nocopy\n\n  app-syncer:\n    image: eugenmayer/unison:2.51.2.1\n    command: /entrypoint.sh supervisord\n    volumes:\n      # This container is configured to sync /host_sync to /app_sync. We bind\n      # ./app to /host_sync using docker-for-mac's osxfs, and then bind\n      # /app_sync to our app-docker-compose-only-sync named volume, so that it\n      # can be used by our `app-docker-compose-only` container, above.\n      - ./app:/host_sync\n      - app-docker-compose-only-sync:/app_sync\n    environment:\n      # These variables control which directories are synced by unison.\n      - HOST_VOLUME=/host_sync\n      - APP_VOLUME=/app_sync\n      - UNISON_SRC=/host_sync\n      - UNISON_DEST=/app_sync\n      - UNISON_DIR=/data\n      # The -ignore flags correspond to the line\n      # `sync_excludes: ['ignored_folder', '.ignored_dot_folder']`\n      # in `../default/docker-sync.yml`. Read the unison manual for details\n      # of their ignore patterns. All other flags are fine to leave as they are.\n      - UNISON_ARGS=-ignore='Name ignored_folder' -ignore='Name .ignored_dot_folder' -prefer /host_sync -numericids -auto -batch\n      - UNISON_WATCH_ARGS=-repeat watch\n      # A few extra environment variables to make C libraries behave sensibly.\n      - TZ=Europe/London\n      - LANG=C.UTF-8\n      - HOME=/root\n\n# Named volumes must be declared in the `volumes` section, but don't need any\n# other configuration.\nvolumes:\n  ? app-docker-compose-only-sync\n"
  },
  {
    "path": "docker-compose-only/docker-compose.yml",
    "content": "# This is our production compose file - not changed for docker-sync or similar\n\nversion: \"2\"\nservices:\n  app-docker-compose-only:\n    image: alpine\n    command: [\"sh\", \"-c\", \"while sleep 3; do cat /var/www/index.html; done\"]\n"
  },
  {
    "path": "dynamic-configuration-dotnev/app/ignored_folder/index.html",
    "content": "Some random HTML file hereasdasd\nNEW\n"
  },
  {
    "path": "dynamic-configuration-dotnev/app/index.html",
    "content": "Some random HTML file hereasdasd\nNEW\n"
  },
  {
    "path": "dynamic-configuration-dotnev/app/some_folder/.ignored_dot_folder/index.html",
    "content": "Some random HTML file hereasdasd\nNEW\n"
  },
  {
    "path": "dynamic-configuration-dotnev/app/some_folder/ignored_folder/index.html",
    "content": "Some random HTML file hereasdasd\nNEW\n"
  },
  {
    "path": "dynamic-configuration-dotnev/app/some_folder/index.html",
    "content": "Some random HTML file hereasdasd\nNEW\n"
  },
  {
    "path": "dynamic-configuration-dotnev/docker-compose-dev.yml",
    "content": "# this is our development docker-compose building on top of the production\n# docker-compose, just mounting the sync image - not redefining anything else\n\nversion: \"2\"\nservices:\n  app-unison:\n    volumes:\n      - docker-sync:${DESTINATION_PATH}:nocopy # will be mounted on to the value of DESTINATION_PATH\n\n# that the important thing\nvolumes:\n  docker-sync:\n    external:\n      name: \"${SYNC_NAME}-unison-sync\"\n"
  },
  {
    "path": "dynamic-configuration-dotnev/docker-compose.yml",
    "content": "# This is our production compose file - not changed for docker-sync or similar\n\nversion: \"2\"\nservices:\n  app-unison:\n    image: alpine\n    command: ['watch', '-n3', 'cat /var/www/index.html']\n"
  },
  {
    "path": "dynamic-configuration-dotnev/docker-sync.yml",
    "content": "version: \"2\"\n\noptions:\n  verbose: true\nsyncs:\n  #IMPORTANT: ensure this name is unique and does not match your other application container name\n  ${SYNC_NAME}-unison-sync: # tip: add -sync and you keep consistent names as a convention\n    src: '${APP_PATH}'\n    sync_excludes: ['ignored_folder', '.ignored_dot_folder']\n"
  },
  {
    "path": "not_default_config_name/docker-compose-dev.yml",
    "content": "# this is our development docker-compose building on top of the production docker-compose, just mounting\n# the sync image - not redefining anything else\n\nversion: \"2\"\nservices:\n  app-native-osx:\n    volumes:\n      - appcode-native-osx-sync:/var/www:nocopy # will be mounted on /var/www\n\n# that the important thing\nvolumes:\n  appcode-native-osx-sync:\n    external: true\n"
  },
  {
    "path": "not_default_config_name/docker-compose.yml",
    "content": "# This is our production compose file - not changed for docker-sync or similar\n\nversion: \"2\"\nservices:\n  app-native-osx:\n    image: alpine\n    command: ['watch', '-n3', 'cat /var/www/index.html']\n"
  },
  {
    "path": "not_default_config_name/docker-sync-special.yml",
    "content": "version: \"2\"\n\noptions:\n  verbose: true\nsyncs:\n  appcode-native-osx-sync: # tip: add -sync and you keep consistent names as a convention\n    src: './app'\n    # sync_strategy: 'native_osx' # not needed, this is the default now\n    sync_excludes: ['ignored_folder', '.ignored_dot_folder']\n"
  },
  {
    "path": "rsync/app/index.html",
    "content": "Some random HTML file hereasdasd\nNEW\n"
  },
  {
    "path": "rsync/docker-compose-dev.yml",
    "content": "# this is our development docker-compose building on top of the production docker-compose, just mounting\n# the sync image - not redefining anything else\n\nversion: \"2\"\nservices:\n  app-rsync:\n    volumes:\n      - appcode-rsync-sync:/var/www:nocopy # will be mounted on /var/www\n\n# that the important thing\nvolumes:\n  appcode-rsync-sync:\n    external: true\n"
  },
  {
    "path": "rsync/docker-compose.yml",
    "content": "# This is our production compose file - not changed for docker-sync or similar\n\nversion: \"2\"\nservices:\n  app-rsync:\n    image: alpine\n    command: ['watch', '-n3', 'cat /var/www/index.html']\n"
  },
  {
    "path": "rsync/docker-sync.yml",
    "content": "version: \"2\"\noptions:\n  verbose: true\nsyncs:\n  #IMPORTANT: ensure this name is unique and does not match your other application container name\n  appcode-rsync-sync: #tip: add -sync and you keep consistent names as a convention\n    src: './app/'\n    sync_host_ip: 'auto'\n    sync_host_port: 10872\n    sync_strategy: 'rsync'\n\n"
  },
  {
    "path": "simplest/app/index.html",
    "content": "Some random HTML file hereasdasd\nNEW\n"
  },
  {
    "path": "simplest/docker-compose-dev.yml",
    "content": "# this is our development docker-compose building on top of the prodicker docker-compose, just mounting\n# the sync image - not redefining anything else\n\nversion: \"2\"\nservices:\n  app-simplest:\n    volumes:\n      - simplest-sync:/var/www:nocopy # will be mounted on /var/www\n\n# that the important thing\nvolumes:\n  simplest-sync:\n    external: true\n"
  },
  {
    "path": "simplest/docker-compose.yml",
    "content": "# This is our production compose file - not changed for docker-sync or similar\n\nversion: \"2\"\nservices:\n  app-simplest:\n    image: alpine\n    command: ['watch', '-n3', 'cat /var/www/index.html']"
  },
  {
    "path": "simplest/docker-sync.yml",
    "content": "version: \"2\"\n\nsyncs:\n  #IMPORTANT: ensure this name is unique and does not match your other application container name\n  simplest-sync: #tip: add -sync and you keep consistent names as a convention\n    src: './app'\n"
  },
  {
    "path": "unison/app/ignored_folder/index.html",
    "content": "Some random HTML file hereasdasd\nNEW\n"
  },
  {
    "path": "unison/app/index.html",
    "content": "aSome random HTML file hereasdasd\nNEW\n"
  },
  {
    "path": "unison/app/some_folder/.ignored_dot_folder/index.html",
    "content": "Some random HTML file hereasdasd\nNEW\n"
  },
  {
    "path": "unison/app/some_folder/ignored_folder/index.html",
    "content": "Some random HTML file hereasdasd\nNEW\n"
  },
  {
    "path": "unison/app/some_folder/index.html",
    "content": "Some random HTML file hereasdasd\nNEW\n"
  },
  {
    "path": "unison/docker-compose-dev.yml",
    "content": "# this is our development docker-compose building on top of the production docker-compose, just mounting\n# the sync image - not redefining anything else\n\nversion: \"2\"\nservices:\n  app-unison:\n    volumes:\n      - appcode-unison-sync:/var/www:nocopy # will be mounted on /var/www\n\n# that the important thing\nvolumes:\n  appcode-unison-sync:\n    external: true\n"
  },
  {
    "path": "unison/docker-compose.yml",
    "content": "# This is our production compose file - not changed for docker-sync or similar\n\nversion: \"2\"\nservices:\n  app-unison:\n    image: alpine\n    command: ['watch', '-n3', 'cat /var/www/index.html']\n"
  },
  {
    "path": "unison/docker-sync.yml",
    "content": "version: \"2\"\n\noptions:\n  verbose: true\n  max_attempt: 30\nsyncs:\n  #IMPORTANT: ensure this name is unique and does not match your other application container name\n  appcode-unison-sync: # tip: add -sync and you keep consistent names as a convention\n    src: './app'\n    sync_strategy: 'unison'\n    sync_excludes: ['ignored_folder', '.ignored_dot_folder']\n"
  },
  {
    "path": "unison-ftp-user/app/ignored_folder/index.html",
    "content": "Some random HTML file hereasdasd\nNEW\n"
  },
  {
    "path": "unison-ftp-user/app/index.html",
    "content": "Some random HTML file hereasdasd\nNEW\n"
  },
  {
    "path": "unison-ftp-user/app/some_folder/.ignored_dot_folder/index.html",
    "content": "Some random HTML file hereasdasd\nNEW\n"
  },
  {
    "path": "unison-ftp-user/app/some_folder/ignored_folder/index.html",
    "content": "Some random HTML file hereasdasd\nNEW\n"
  },
  {
    "path": "unison-ftp-user/app/some_folder/index.html",
    "content": "Some random HTML file hereasdasd\nNEW\n"
  },
  {
    "path": "unison-ftp-user/docker-compose-dev.yml",
    "content": "# this is our development docker-compose building on top of the production docker-compose, just mounting\n# the sync image - not redefining anything else\n\nversion: \"2\"\nservices:\n  app-unison:\n    volumes:\n      - appcode-unison-sync:/var/www:nocopy # will be mounted on /var/www\n\n# that the important thing\nvolumes:\n  appcode-unison-sync:\n    external: true\n"
  },
  {
    "path": "unison-ftp-user/docker-compose.yml",
    "content": "# This is our production compose file - not changed for docker-sync or similar\n\nversion: \"2\"\nservices:\n  app-unison:\n    image: alpine\n    command: ['watch', '-n3', 'cat /var/www/index.html']\n"
  },
  {
    "path": "unison-ftp-user/docker-sync.yml",
    "content": "version: \"2\"\n\noptions:\n  verbose: true\nsyncs:\n  #IMPORTANT: ensure this name is unique and does not match your other application container name\n  appcode-unison-sync: # tip: add -sync and you keep consistent names as a convention\n    src: './app'\n    sync_excludes: ['ignored_folder', '.ignored_dot_folder']\n    # example on how to let the files be owned by uid 22, thats the ftp user\n    sync_userid: '21'\n    sync_strategy: 'unison'\n\n"
  },
  {
    "path": "unison-new-user/app/index.html",
    "content": "eugen"
  },
  {
    "path": "unison-new-user/docker-compose-dev.yml",
    "content": "# this is our development docker-compose building on top of the production docker-compose, just mounting\n# the sync image - not redefining anything else\n\nversion: \"2\"\nservices:\n  app-unison:\n    volumes:\n      - appcode-unison-sync:/var/www:nocopy # will be mounted on /var/www\n\n# that the important thing\nvolumes:\n  appcode-unison-sync:\n    external: true\n"
  },
  {
    "path": "unison-new-user/docker-compose.yml",
    "content": "# This is our production compose file - not changed for docker-sync or similar\n\nversion: \"2\"\nservices:\n  app-unison:\n    image: alpine\n    container_name: 'your-app'\n    command: 'watch -n3 cat /var/www/index.html'\n\n"
  },
  {
    "path": "unison-new-user/docker-sync.yml",
    "content": "version: \"2\"\n\noptions:\n  verbose: true\nsyncs:\n  #IMPORTANT: ensure this name is unique and does not match your other application container name\n  appcode-unison-sync: # tip: add -sync and you keep consistent names as a convention\n    src: './app'\n    sync_excludes: ['ignored_folder', '.ignored_dot_folder']\n    # example on how to let the files be owned by uid 22, thats the ftp user\n    sync_userid: '10002'\n    sync_strategy: 'unison'\n"
  },
  {
    "path": "unison-root-user/app/ignored_folder/index.html",
    "content": "Some random HTML file hereasdasd\nNEW\n"
  },
  {
    "path": "unison-root-user/app/index.html",
    "content": "Some random HTML file hereasdasd\nNEW\n"
  },
  {
    "path": "unison-root-user/app/some_folder/.ignored_dot_folder/index.html",
    "content": "Some random HTML file hereasdasd\nNEW\n"
  },
  {
    "path": "unison-root-user/app/some_folder/ignored_folder/index.html",
    "content": "Some random HTML file hereasdasd\nNEW\n"
  },
  {
    "path": "unison-root-user/app/some_folder/index.html",
    "content": "Some random HTML file hereasdasd\nNEW\n"
  },
  {
    "path": "unison-root-user/docker-compose-dev.yml",
    "content": "# this is our development docker-compose building on top of the production docker-compose, just mounting\n# the sync image - not redefining anything else\n\nversion: \"2\"\nservices:\n  app-unison:\n    volumes:\n      - appcode-unison-sync:/var/www:nocopy # will be mounted on /var/www\n\n# that the important thing\nvolumes:\n  appcode-unison-sync:\n    external: true\n"
  },
  {
    "path": "unison-root-user/docker-compose.yml",
    "content": "# This is our production compose file - not changed for docker-sync or similar\n\nversion: \"2\"\nservices:\n  app-unison:\n    image: alpine\n    command: ['watch', '-n3', 'cat /var/www/index.html']\n"
  },
  {
    "path": "unison-root-user/docker-sync.yml",
    "content": "version: \"2\"\n\noptions:\n  verbose: true\nsyncs:\n  #IMPORTANT: ensure this name is unique and does not match your other application container name\n  appcode-unison-sync: # tip: add -sync and you keep consistent names as a convention\n    src: './app'\n    sync_excludes: ['ignored_folder', '.ignored_dot_folder']\n    # the files should be own by root in the target cointainer\n    sync_userid: 0\n    sync_strategy: 'unison'\n"
  }
]