🔖

docker-compose.ymlのcommandで複数コマンドを使うときにハマった

2023/05/23に公開

問題

下記のようなdocker-compose.ymlを作る。

▼ docker-compose.yml

version: '3'

services:
  alpine:
    image: alpine
    command: >
          apk update &&
          apk add --no-cache curl fontconfig

docker compose up すると、 apk update しか実行されない。

解析

docker compose config する。

▼ docker compose config

services:
  alpine:
    command:
    - apk
    - update
    image: alpine
    networks:
      default: null

apk update を配列として認識。
ここでぶち切られていて、以降が無視されている。

結論

/bin/sh -c ''を使う

▼ docker-compose.yml

version: '3'

services:
  font:
    image: alpine
    command: >
      /bin/sh -c '
      apk update &&
      apk add --no-cache curl fontconfig
      '

▼ docker compose config

services:
  alpine:
    command:
    - /bin/sh
    - -c
    - ' apk update && apk add --no-cache curl fontconfig '
    image: alpine
    networks:
      default: null

補足

">"ではなく "|" としても同様

▼ docker-compose.yml

version: '3'

services:
  alpine:
    image: alpine
    command: |
          apk update &&
          apk add --no-cache curl fontconfig

▼ docker compose config

services:
  alpine:
    command:
    - apk
    - update
    image: alpine
    networks:
      default: null

commandを1行にしてもNGだった

おそらく && で千切られている。

▼ docker-compose.yml

version: '3'

services:
  alpine:
    image: alpine
    command: apk update && apk add --no-cache curl fontconfig

▼ docker compose config

services:
  alpine:
    command:
    - apk
    - update
    image: alpine
    networks:
      default: null

環境

> docker compose version  
Docker Compose version v2.17.3

> docker version                        
Client: Docker Engine - Community
 Version:           23.0.6
 API version:       1.42
 Go version:        go1.19.9
 Git commit:        ef23cbc
 Built:             Fri May  5 21:18:33 2023
 OS/Arch:           linux/arm64
 Context:           default

Server: Docker Engine - Community
 Engine:
  Version:          23.0.6
  API version:      1.42 (minimum version 1.12)
  Go version:       go1.19.9
  Git commit:       9dbdbd4
  Built:            Fri May  5 21:18:33 2023
  OS/Arch:          linux/arm64
  Experimental:     false
 containerd:
  Version:          1.6.21
  GitCommit:        3dce8eb055cbb6872793272b4f20ed16117344f8
 runc:
  Version:          1.1.7
  GitCommit:        v1.1.7-0-g860f061
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

Discussion