<blockquote>
<p>Also if I'm reading that right it's relying on a prebuilt image rather that using a stock image and checking out the code? So anybody that uses this is going to start with a snapshot of the code from heaven knows when rather than something current?</p>
</blockquote>

<p>After reviewing everything I <em>think</em> I understand everything, but take it with a grain of salt because I don't fully understand docker-compose. When docker <strong>builds</strong> the image it copies the Gemfile and Gemfile.lock and does a <code>bundle install</code>. When the image is <strong>run</strong> it copies the local directory and runs the rails port, using what was in the local directory when the image was run.</p>

<p>I think this works because if the gemfiles are touched it invalidates that layer of the build and requires it to be rebuilt, while the next steps (<code>bundle install</code>) do not depend on the rest of the website code.</p>

<p>If this works it means that you can make changes and test them without having to do a new <code>bundle install</code></p>

<p style="font-size:small;-webkit-text-size-adjust:none;color:#666;">—<br />You are receiving this because you are subscribed to this thread.<br />Reply to this email directly, <a href="https://github.com/openstreetmap/openstreetmap-website/pull/1290#issuecomment-247519211">view it on GitHub</a>, or <a href="https://github.com/notifications/unsubscribe-auth/ABWnLTK9mhRS9v4XFXqbuI2g1DhzeIdlks5qqiP0gaJpZM4J-dnj">mute the thread</a>.<img alt="" height="1" src="https://github.com/notifications/beacon/ABWnLd64vYTSgcZeZmtBpdV9di7MgM8Nks5qqiP0gaJpZM4J-dnj.gif" width="1" /></p>
<div itemscope itemtype="http://schema.org/EmailMessage">
<div itemprop="action" itemscope itemtype="http://schema.org/ViewAction">
  <link itemprop="url" href="https://github.com/openstreetmap/openstreetmap-website/pull/1290#issuecomment-247519211"></link>
  <meta itemprop="name" content="View Pull Request"></meta>
</div>
<meta itemprop="description" content="View this Pull Request on GitHub"></meta>
</div>

<script type="application/json" data-scope="inboxmarkup">{"api_version":"1.0","publisher":{"api_key":"05dde50f1d1a384dd78767c55493e4bb","name":"GitHub"},"entity":{"external_key":"github/openstreetmap/openstreetmap-website","title":"openstreetmap/openstreetmap-website","subtitle":"GitHub repository","main_image_url":"https://cloud.githubusercontent.com/assets/143418/17495839/a5054eac-5d88-11e6-95fc-7290892c7bb5.png","avatar_image_url":"https://cloud.githubusercontent.com/assets/143418/15842166/7c72db34-2c0b-11e6-9aed-b52498112777.png","action":{"name":"Open in GitHub","url":"https://github.com/openstreetmap/openstreetmap-website"}},"updates":{"snippets":[{"icon":"PERSON","message":"@pnorman in #1290: \u003e Also if I'm reading that right it's relying on a prebuilt image rather that using a stock image and checking out the code? So anybody that uses this is going to start with a snapshot of the code from heaven knows when rather than something current?\r\n\r\nAfter reviewing everything I *think* I understand everything, but take it with a grain of salt because I don't fully understand docker-compose. When docker **builds** the image it copies the Gemfile and Gemfile.lock and does a `bundle install`. When the image is **run** it copies the local directory and runs the rails port, using what was in the local directory when the image was run.\r\n\r\nI think this works because if the gemfiles are touched it invalidates that layer of the build and requires it to be rebuilt, while the next steps (`bundle install`) do not depend on the rest of the website code.\r\n\r\nIf this works it means that you can make changes and test them without having to do a new `bundle install`"}],"action":{"name":"View Pull Request","url":"https://github.com/openstreetmap/openstreetmap-website/pull/1290#issuecomment-247519211"}}}</script>