title: How to rebuild go project efficiently while using Docker Compose?
body: <p>This may be a stupid question, but I'm new to using Docker-compose. So far, I love it... but I'm having some long build times. I have a project with several dependencies, and I need to obviously rebuild the source every time I make a change. Right now, I'm calling <code>docker-compose build</code> to rebuild the container, followed by a <code>docker-compose up</code>. The problem is:</p>
  
  <ol>
  <li><p>It's rebuilding the entire container for every change I make to the source code (which takes a long time -- fetching dependencies/etc). This is significantly slowing me down.</p></li>
  <li><p>I really feel like I should just be able to run a command on the container to rebuild and then re-run the executable, like-so: <pre>
  docker-compose run web go build .
  docker-compose run web ./app</pre> or <pre>
  docker-compose run web go build .
  docker-compose restart
  </pre>  This should work because I'm using a volume to share code amongst the host and container. There shouldn't be a need to refetch all the dependencies. Shouldn't it use the freshly built executable? However, this does not reflect the built changes and port forwarding appears to break.</p></li>
  </ol>
  
  <p>For reference, here is my <em>Dockerfile</em>:</p>
  
  <pre><code>FROM golang:1.8
  
  COPY . /go/src/github.com/codeblooded/test1
  WORKDIR /go/src/github.com/codeblooded/test1
  
  RUN echo $PATH
  RUN go get -d -v ./...
  RUN go install -v ./...
  
  RUN go build -o test1 .
  CMD ["test1"]
  EXPOSE 3470
  </code></pre>
  
  <p>And my <em>docker-compose.yml</em> file:</p>
  
  <pre><code>version: '3'
  services:
    postgres:
      image: postgres
      volumes:
        - ./db/data/psql:/var/lib/postgresql/data
        - ./db/schema:/db/schema
    redis:
      image: redis
      volumes:
        - ./db/data/redis:/data
    server:
      build: .
      command: test1
      volumes:
        - .:/go/src/github.com/codeblooded/test1
      ports:
        - "3470:3470"
      depends_on:
        - postgres
        - redis
  </code></pre>
  
  <p>Is there something I'm missing?</p>