Saltar navegación

Usando bind mounts

Bind mounts

No capítulo anterior, empregamos un named volume para manter os datos da nosa base de datos. Os named volumes son unha boa opción se non queremos preocuparnos de onde se gardan os datos e non queremos acceder aos mesmos con certa frecuencia, ou observar os cambios producidos.

Cos bind mounts, podemos xestionar a ruta exacta dentro do equipo anfitrión. Por exemplo, pode ser frecuente compartir o código fonte da aplicación co contedor e monitorizar os posibles cambios dentro do código fonte.

Táboa comparativa

Named volumes Bind Mounts
Host location Docker chooses You control
Mount Example (using -v) my-volume:/usr/local/data /path/to/data:/usr/local/data
Populates new volume with container contents Yes No
Supports Volume Drivers Yes No

Iniciar un contedor para Dev

Para iniciar un contedor como soporte ao fluxo de desenvolvemento, executaremos as seguintes tarefas:

  • Conectar o código fonte dentro do contedor
  • Instalar as dependencias
  • Iniciar nodemon para monitorizar os cambios no sistema de ficheiros

Imos aló!

  1. Comproba que non haxa ningún contedor en execución.
  2. Executa o seguinte comando:
    $ docker run -dp 3000:3000 \
      -w /app -v $PWD:/app \
      node:10-alpine \
      sh -c "yarn install && yarn run dev"
    • -dp 3000:3000 - Executa o contedor en modo detached (background) e crea un mapeo de portos de rede
    • -w /app - Establece o directorio de traballo, dende onde se vai executar o comando
    • node:10-alpine - a imaxe a usar. É a mesma imaxe que empregamos no ficheiro Dockerfile
    • sh -c "yarn install && yarn run dev" - O comando a executar no contedor. yarn install instala todas as dependencias. No ficheiro package.json atopamos que o script dev inicia nodemon.
  3. Observa a información de rexistro (log) co comando docker logs -f <id-contedor>.
    [nodemon] 1.19.2
    [nodemon] to restart at any time, enter `rs`
    [nodemon] watching dir(s): *.*
    [nodemon] starting `node src/index.js`
    Using sqlite database at /etc/todos/todo.db
    Listening on port 3000
  4. Fai un cambio na liña 109 do ficheiro src/static/js/app.js da aplicación, cambiando o texto "Add Item" por "Add".
  5. A continuación, actualiza a páxina web para ver os cambios. Pode tardar uns segundos en reiniciar o servidor, e nese intervalo podes recibir unha mensaxe de erro. Inténtao un pouco máis tarde.
  6. Proba para facer algún cambio adicional, e cando remates, para o contedor e constrúe a nova imaxe co comando docker build.

Feito con eXeLearning (Nova xanela)