Table of Contents

Docker layer

Table of ContentsClose

docker.png

1. Description

This layer integrates basic container management into Spacemacs.

1.1. Features:

  • Syntax highlighting for Docker files
  • Docker build integration
  • TRAMP access to running Docker containers
  • Docker container and image management via docker.el
  • docker-compose integration via docker.el
  • Syntax checking via hadolint
  • Code-Completion via lsp

2. Install

2.1. Docker

To use this configuration layer, add it to your ~/.spacemacs. You will need to add docker to the existing dotspacemacs-configuration-layers list in this file.

You will also need the native package Docker for the actual container management.

2.2. Linting

For syntax checking the external library hadolint is necessary. It can either be downloaded from here or build locally with stack as shown below:

stack install hadolint

2.3. LSP

This layer can be enhanced with dockerfile-language-server-nodejs and emacs lsp-mode to provide richer, IDE-like capabilities. To do so set the layer variable docker-dockerfile-backend to lsp like shown below:

(setq-default dotspacemacs-configuration-layers
              '((docker :variables docker-dockerfile-backend 'lsp)))

In addition you need to install the lsp server's executable in your system. This can be done via npm:

npm i -g dockerfile-language-server-nodejs

3. Usage

3.1. TRAMP access to docker containers

This relies on the docker-tramp package which uses docker exec available in docker versions > 1.3.

docker-tramp adds a new prefix /docker: that you can use with SPC f f, this prefix allows to access your docker containers and also provides auto-completion of the running containers.

4. Key bindings

Key binding Description
SPC a t d entry point to interact with dockers, after that use ? for help
SPC m b build current buffer
SPC m B build current buffer without cache
SPC m d shortcut for docker.el main menu
SPC m i shortcut for 'docker images' in the docker.el screen
SPC m p shortcut for 'docker containers' in the docker.el screen

Author: root

Created: 2024-04-03 Wed 19:40

Validate