docker-compose, new container version and logs persistence

Quite common use-case with docker-compose:

  • A application’s code pulled from a repository using git.
  • A docker-compose.yml looking like this:


version: '2'
services:
web:
build: ./myapp

  • How to mount a device of host to host in a Docker container?
  • Docker logs interpreting JSON logs as string
  • Does all running docker containers have a separate process ID
  • Docker : How to configure Internet -> firewall container -> webserver container
  • make[1]: [install-domserver-l] Error 1 (ignored)
  • Symfony - Unknown MySQL server host when using command line
  • When I want to deploy a new version I just pull the latest version of my code then make a docker-compose up --build -d.

    Works almost perfectly except each time I make an update it erases my past logs accessible using docker-compose logs. I understand why docker behaves that way (even if docker-compose recreates a container with the same name it’s still a brand new container, so it’s quite logical logs get flushed). Still, it’s really not practical.

    Any one has a solution for that ? Preferably one that does not involve modifying images or using volumes to store logs. (Because that should be the whole point of docker logs, not having to worry about that).

  • In Docker tomcat container tomcat is not running
  • How to continue a docker which is exited
  • Sharing directories in a Docker container both with a Dockerfile and after the container is running
  • Adding repos to the dockerfile
  • interactive docker build from dockerfile?
  • Change “hosts” / “-h” Docker for Windows in daemon.json
  • 2 Solutions collect form web for “docker-compose, new container version and logs persistence”

    You could redirect the output to a log file when starting the containers, something like:

    docker-compose up --build --no-color --force-recreate &> logs &
    

    Instead of docker-compose logs you could tail logs anytime you want.

    I think your best bet is to use one of the Logging Driver options described on the Docker docs:
    https://docs.docker.com/engine/admin/logging/overview/

    If this isn’t a workable solution, can you give me a little more context for your goals and obstacles?

    Docker will be the best open platform for developers and sysadmins to build, ship, and run distributed applications.