title: Setting up Gitlab using Docker on Windows host, issue with shared folders
body: <p><strong>TLDR;</strong></p>
  
  <p>Does anyone know how to solve the "Failed asserting that ownership of "/var/opt/gitlab/git-data" was git" error?</p>
  
  <p><strong>Background:</strong></p>
  
  <p>I want to set up the <a href="https://hub.docker.com/r/gitlab/gitlab-ce/" rel="nofollow noreferrer">Gitlab Docker</a> on WindowsServer2012R2 running Docker toolbox, version 17.04.0-ce, build 4845c56.</p>
  
  <p><strong>Issue/Question</strong></p>
  
  <p>I can't get the shared folder to work properly on the D drive of the server. I read that I needed to add the folder to the VirtualBox VM, which I did via the settings/shared folder menu in the VB GUI. I set a name "gitlab" to the path "D:\data\gitlab" then checked auto-mount, make permanent, and set it to full access. </p>
  
  <p><a href="https://i.stack.imgur.com/34piy.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/34piy.png" alt="VM Shared Folder Settings"></a></p>
  
  <p>I started the docker machine and ran "docker-machine ssh $machine-name". I noticed that there was no /media directory and so I added a folder at the home directory (/home/docker/gitlab) and then mounted the shared folder using the following command I found in several forums:</p>
  
  <pre><code>sudo mount -t vboxsf gitlab /home/docker/gitlab
  </code></pre>
  
  <p>At this point I can add files to the Windows host directory or the Docker VM and it seems to work fine and the test files show up.</p>
  
  <p>Now when I spin up the Gitlab Docker image, I use the following command modified from their documentation:</p>
  
  <pre><code>docker run --detach --hostname gitlab.example.com --publish 80:80 --name gitlab --volume /home/docker/gitlab:/etc/gitlab:Z --volume /home/docker/gitlab/logs:/var/log/gitlab:Z --volume /home/docker/gitlab/data:/var/opt/gitlab:Z gitlab/gitlab-ce
  </code></pre>
  
  <p>Now I know that it appears to be writing to the shared drive, because all of these files are generated, but then it crashes after a few seconds and I receive the following error log.</p>
  
  <p><a href="https://i.stack.imgur.com/ZgCDt.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/ZgCDt.png" alt="Files Generated when Running Gitlab Docker"></a></p>
  
  <p>Error Log:</p>
  
  <pre><code>Thank you for using GitLab Docker Image!
  Current version: gitlab-ce=9.3.6-ce.0
  
  Configure GitLab for your system by editing /etc/gitlab/gitlab.rb file
  And restart this container to reload settings.
  To do it use docker exec:
  
    docker exec -it gitlab vim /etc/gitlab/gitlab.rb
    docker restart gitlab
  
  For a comprehensive list of configuration options please see the Omnibus GitLab readme
  https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md
  
  If this container fails to start due to permission problems try to fix it by executing:
  
    docker exec -it gitlab update-permissions
    docker restart gitlab
  
  Installing gitlab.rb config...
  Generating ssh_host_rsa_key...
  Generating public/private rsa key pair.
  Your identification has been saved in /etc/gitlab/ssh_host_rsa_key.
  Your public key has been saved in /etc/gitlab/ssh_host_rsa_key.pub.
  The key fingerprint is:
  SHA256:GyFlf9tl7ZuEbuE+dwZUYiyahdsRzpC1T7kwyUvoD+o root@gitlab.example.com
  The key's randomart image is:
  +---[RSA 2048]----+
  |        o .+oo   |
  |       o .o*+o+.o|
  |      . . o*@+oo+|
  |       . o+o.Oo= |
  |        S o o++..|
  |         + oo + o|
  |        o   .+ + |
  |       .    o. .o|
  |        E    .o..|
  +----[SHA256]-----+
  Generating ssh_host_ecdsa_key...
  Generating public/private ecdsa key pair.
  Your identification has been saved in /etc/gitlab/ssh_host_ecdsa_key.
  Your public key has been saved in /etc/gitlab/ssh_host_ecdsa_key.pub.
  The key fingerprint is:
  SHA256:Kb99jG8EtMuTSdIuqBT3GLeD1D0wwTEcQhKgVJUlBjs root@gitlab.example.com
  The key's randomart image is:
  +---[ECDSA 256]---+
  | .o+=*=+=+       |
  |..  oo..=..      |
  |.  E   . * .     |
  |    o + +.B      |
  |     +.BS* *     |
  |    . +o= B .    |
  |   . .  .o =     |
  |    .    o. +    |
  |        . .+.    |
  +----[SHA256]-----+
  Generating ssh_host_ed25519_key...
  Generating public/private ed25519 key pair.
  Your identification has been saved in /etc/gitlab/ssh_host_ed25519_key.
  Your public key has been saved in /etc/gitlab/ssh_host_ed25519_key.pub.
  The key fingerprint is:
  SHA256:lVxpu0UoyNPWVY6D9c+m/bUTyvKP6vuR4cTOYwQ0j+U root@gitlab.example.com
  The key's randomart image is:
  +--[ED25519 256]--+
  |       . o +.=o..|
  |        +.=o@o.+ |
  |         o+=.Eo o|
  |         .  + .o.|
  |        S    B  +|
  |            B o= |
  |            .Oo +|
  |           ..o+.+|
  |          .+*+.oo|
  +----[SHA256]-----+
  Preparing services...
  Starting services...
  Configuring GitLab package...
  /opt/gitlab/embedded/bin/runsvdir-start: line 24: ulimit: pending signals: cannot modify limit: Operation not permitted
  /opt/gitlab/embedded/bin/runsvdir-start: line 34: ulimit: max user processes: cannot modify limit: Operation not permitted
  /opt/gitlab/embedded/bin/runsvdir-start: line 37: /proc/sys/fs/file-max: Read-only file system
  Configuring GitLab...
  
  ================================================================================
  Error executing action `run` on resource 'ruby_block[directory resource: /var/opt/gitlab/git-data]'
  ================================================================================
  
  Mixlib::ShellOut::ShellCommandFailed
  ------------------------------------
  Failed asserting that ownership of "/var/opt/gitlab/git-data" was git
  ---- Begin output of set -x &amp;&amp; [ "$(stat --printf='%U' $(readlink -f /var/opt/gitlab/git-data))" = 'git' ] ----
  STDOUT:
  STDERR: + readlink -f /var/opt/gitlab/git-data
  + stat --printf=%U /var/opt/gitlab/git-data
  + [ UNKNOWN = git ]
  ---- End output of set -x &amp;&amp; [ "$(stat --printf='%U' $(readlink -f /var/opt/gitlab/git-data))" = 'git' ] ----
  Ran set -x &amp;&amp; [ "$(stat --printf='%U' $(readlink -f /var/opt/gitlab/git-data))" = 'git' ] returned 1
  
  Cookbook Trace:
  ---------------
  /opt/gitlab/embedded/cookbooks/cache/cookbooks/gitlab/libraries/storage_directory_helper.rb:124:in `validate_command'
  /opt/gitlab/embedded/cookbooks/cache/cookbooks/gitlab/libraries/storage_directory_helper.rb:112:in `block in validate'
  /opt/gitlab/embedded/cookbooks/cache/cookbooks/gitlab/libraries/storage_directory_helper.rb:111:in `each_index'
  /opt/gitlab/embedded/cookbooks/cache/cookbooks/gitlab/libraries/storage_directory_helper.rb:111:in `validate'
  /opt/gitlab/embedded/cookbooks/cache/cookbooks/gitlab/libraries/storage_directory_helper.rb:87:in `validate!'
  /opt/gitlab/embedded/cookbooks/cache/cookbooks/gitlab/definitions/storage_directory.rb:35:in `block (3 levels) in from_file'
  
  Resource Declaration:
  ---------------------
  # In /opt/gitlab/embedded/cookbooks/cache/cookbooks/gitlab/definitions/storage_directory.rb
  
   26:   ruby_block "directory resource: #{params[:path]}" do
   27:     block do
   28:       # Ensure the directory exists
   29:       storage_helper.ensure_directory_exists(params[:path])
   30:
   31:       # Ensure the permissions are set
   32:       storage_helper.ensure_permissions_set(params[:path])
   33:
   34:       # Error out if we have not achieved the target permissions
   35:       storage_helper.validate!(params[:path])
   36:     end
   37:     not_if { storage_helper.validate(params[:path]) }
   38:   end
   39: end
  
  Compiled Resource:
  ------------------
  # Declared in /opt/gitlab/embedded/cookbooks/cache/cookbooks/gitlab/definitions/storage_directory.rb:26:in `block in from_file'
  
  ruby_block("directory resource: /var/opt/gitlab/git-data") do
    params {:path=&gt;"/var/opt/gitlab/git-data", :owner=&gt;"git", :group=&gt;nil, :mode=&gt;"0700", :name=&gt;"/var/opt/gitlab/git-data"}
    action [:run]
    retries 0
    retry_delay 2
    default_guard_interpreter :default
    block_name "directory resource: /var/opt/gitlab/git-data"
    declared_type :ruby_block
    cookbook_name "gitlab"
    recipe_name "gitlab-shell"
    block #&lt;Proc:0x000000054a99a8@/opt/gitlab/embedded/cookbooks/cache/cookbooks/gitlab/definitions/storage_directory.rb:27&gt;
    not_if { #code block }
  end
  
  Platform:
  ---------
  x86_64-linux
  </code></pre>
  
  <p>Does anyone know how to solve the "Failed asserting that ownership of "/var/opt/gitlab/git-data" was git" error? I'm still somewhat new to Docker/setting up Gitlab, so it's very possible I could have overlooked something simple. I've spent several hours Googling this, and it seems that others also have a lot of issues getting shared folders to work from Windows using the Docker Toolbox, so hopefully this will help others as well.</p>