LoginSignup
5
6

More than 3 years have passed since last update.

LocalStack がエラーで起動できない

Last updated at Posted at 2019-06-29

概要

localstack を Git から Clone してそのまま使おうとしたらエラーで起動できなかったので対策をメモします。対象はmacOS利用者の方になります。
※手っ取り早く知りたい人は一番下の解決策の項目を見てください。

環境

macOS Mojave 10.14.5
Docker version 18.09.2

対策

エラー内容

docker-composeから起動した時のエラーメッセージは下記の内容になります。

$ docker-compose up
Starting localstack_localstack_1 ... error

ERROR: for localstack_localstack_1  Cannot start service localstack: b'Mounts denied: 
The path /var/folders/p2/fwlptfcs3h58cs3j4q21bkfm0000gn/T
is not shared from OS X and is not known to Docker.
You can configure shared paths from Docker -> Preferences... -> File Sharing.
See https://docs.docker.com/docker-for-mac/osxfs/#namespaces for more info.
.'

ERROR: for localstack  Cannot start service localstack: b'Mounts denied: 
The path /var/folders/p2/fwlptfcs3h58cs3j4q21bkfm0000gn/T
is not shared from OS X and is not known to Docker.
You can configure shared paths from Docker -> Preferences... -> File Sharing.
See https://docs.docker.com/docker-for-mac/osxfs/#namespaces for more info.
.'
ERROR: Encountered errors while bringing up the project.

※ エラーメッセージ中の \r\n は見やすいように改行にしています。

マウントできないエラーのようです。
Dockerアプリの設定から File Sharing を確認すると以下の画像の通りでした。

image.png

たしかに /var が入ってないし追加してあげようとしたら以下の画像の通り、エラーになります。

image.png

シンボリックリンクを疑ったが、やはりそうだった。 /var の本体は /private/var でした。
しかし、それなら大丈夫なはずだがなぜエラーになるのか...

docker-compose.yml の確認

docker-compose.yml
version: '2.1'

services:
 localstack:
   image: atlassianlabs/localstack
   ports:
     - "4567-4582:4567-4582"
     - "8080:8080"
   environment:
     - SERVICES=${SERVICES- }
     - DEBUG=${DEBUG- }
     - DATA_DIR=${DATA_DIR- }
     - LAMBDA_EXECUTOR=${LAMBDA_EXECUTOR- }
     - KINESIS_ERROR_PROBABILITY=${KINESIS_ERROR_PROBABILITY- }
     - DOCKER_HOST=unix:///var/run/docker.sock
   volumes:
     - "${TMPDIR:-/tmp/localstack}:/tmp/localstack"
     - "/var/run/docker.sock:/var/run/docker.sock"

volumes のこの ${TMPDIR:-/tmp/localstack}:/tmp/localstack が怪しい。
調べてみるとやはりこれのせいだった。
一応、TMPDIRは下記のパスのとおりで/var配下だけどダメらしい。

$ echo $TMPDIR
/var/folders/p2/xxxx/T

docker run だとシンボリックリンクを解決してくれないのかもしれない。
そのため以下の方法で指定し、解決することとした。

解決策

$ TMPDIR=/private$TMPDIR docker-compose up

参考

5
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6