'Re:dash'를 'Docker for Mac'으로 이동해 보았다

7467 단어 MacOSXMac도커redash

'Re:dash'를 'Docker for Mac'에서 움직여 보았다



0. 소개



얼마 전에 Rebuild.fm에서 듣고 궁금했던 "Re : dash"를 시도해보십시오.
Mac의 Mac 용 Docker 환경에서 공식 사이트의 지침을 참조하십시오.
Docker Compose를 이용한 곳 mac 특유의 부분으로 조금 빠졌으므로 기사로 했습니다.
게다가, 혼잡도, 억지로 두면 docker-compose로 간단하게 구축할 수 있었습니다.

1. 환경



mac OSX Yosemite
Docker for Mac ver.1.12.1-beta26.1(build: 12100)
Re:dash 0.11.1+b2095 (2016/09/26 시점의 latest)

2. 절차



아래 Re:dash 공식 사이트 에서 인용

Docker Compose
1.Make sure you have a Docker machine up and running.
2.Make sure your current working directory is the root of this GitHub repository.
3.Run docker-compose up postgres.
4.Run ./setup/docker/create_database.sh. This will access the postgres container and set up the database.
5.Run docker-compose up
6.Run docker-machine ls, take note of the ip for the Docker machine you are using, and open the web browser.
7.Visit that Docker machine IP at port 80, and you should see a Re:dash login screen.

Now proceed to “Setup”.

하지만, 후술하는 mac 특유의 문제로 조금 빠졌기 때문에
다음과 같이 했습니다. ※후술의 워크 어라운드 2로 대응

Mac용 Docker가 실행되는 Mac의 터미널에서 적절한 디렉토리에서 다음 명령을 실행합니다.
# 1.git clone と ディレクトリ移動
git clone https://github.com/getredash/redash.git
cd redash/

# 2.docker-compose-example.ymlより、docker-compose.ymlを作成
#   Dockerホスト上のPostgreSQLのデータ置き場を/opt/postgres-dataからカレントディレクトリ配下./postgres-dataへ変更(環境により適宜変更してください)
#   sedを使わずに `mv docker-compose-example.yml docker-compose.yml`して `vi docker-compose.yml`でもOK
#  なお、macではなく、Linuxであれば`mv docker-compose-example.yml docker-compose.yml`だけで問題と思います。
cat docker-compose-example.yml | sed -e "s/\/opt\/postgres-data/\.\/postgres-data/" > docker-compose.yml

# 3.`-d` オプション(バックグラウンド起動)をつけてPostgreSQLだけ起動
docker-compose up -d postgres

# 4.create_database.shの実行
./setup/docker/create_database.sh

# 5. 残りも`-d` オプション(バックグラウンド起動)をつけて起動
docker-compose up -d

3. 설치 후



설치 후 브라우저에서 http://127.0.0.1/ 에 액세스



초기 관리자 사용자/비밀번호는 admin/admin이므로 입력하여 로그인


4.mac 특유의 맞물림



Re : dash보다 PostgreSQL의 볼륨 마운트 부분에서 오류가 발생했습니다.

docker-compose-example.yml의 내용이있는 경우
PostgreSQL의 Docker 호스트 측의 볼륨이 /opt/postgres-data이므로,Docker for mac 의 초기 설정에서는 File sharing 의 설정이 되어 있지 않으면 분노합니다.
redash $docker-compose up -d postgres
Pulling postgres (postgres:9.3)...
9.3: Pulling from library/postgres
6a5a5368e0c2: Pull complete
193f770cec44: Pull complete
33647077f2ee: Pull complete
53bc65f84840: Pull complete
a4d3b0f1c16a: Pull complete
bdbe3c2ddbbd: Pull complete
575bb3898603: Pull complete
72c9fe0d644d: Pull complete
b87a349fcd43: Pull complete
e7b9f48e3ddc: Pull complete
1094bf57053d: Pull complete
Digest: sha256:b33b9b7e4de09ac8ebd5f44e03b99569b48a2040463ed4ec8b841e46993359c5
Status: Downloaded newer image for postgres:9.3
Creating redash_postgres_1

ERROR: for postgres  Cannot start service postgres: Mounts denied: 
The path /opt/postgres-data
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.

4.1. 워크 어라운드 그 1



PostgreSQL의 호스트 측의 volume에 대해 /opt/postgres-data 를 그대로 이용하는 경우

오류 메시지에 나열된 URL 따라 Docker 아이콘 -> Preferences -> File sharing에서
GUI 설정에서 /opt/를 추가합니다.

또한, Mac 때문에/opt/하위는 root의 허가 에러도 나오므로,
sudo에서 미리 /opt/postgres-data 디렉토리 작성 및
작성한 디렉토리의 소유자도 root에서 로그인 사용자(*)로 변경합니다.
*: 아래의 YOUR_LOGIN_USER_NAME 부분을 내 계정으로 바꿉니다.)
redash $docker-compose up -d postgres
Starting redash_postgres_1

ERROR: for postgres  Cannot start service postgres: mkdir /opt/postgres-data: permission denied
ERROR: Encountered errors while bringing up the project.
redash $sudo mkdir /opt/postgres-data
Password:
redash $sudo chown YOUR_LOGIN_USER_NAME /opt/postgres-data/
redash $docker-compose up -d postgres
Starting redash_postgres_1

4.2.워크 어라운드 그 2



PostgreSQL의 호스트측의 volume에 대해서 /opt/postgres-data 로부터 변경한다./opt/postgres-data 대신 docker-compose를 조작하는 사용자 (로그인 사용자)/users/ 의 부하의 어딘가 적당한 디렉토리 (Docker for mac 로 디폴트로 File sharing 의 설정이 되어 있다) 하고 , 디렉토리 및 파일 작성 권한이 있는 디렉토리로 옮겨놓는다.
이번은 동작 검증이 목적이므로, git clone했다 redash 디렉토리 부하로 변경했습니다,
구체적으로는 다음과 같이 docker-compose.yml의 postgres의 volumes를 변경.

docker-compose.yml
redash:
  image: redash/redash:latest
  ports:
    - "5000:5000"
  links:
    - redis
    - postgres
  environment:
    REDASH_STATIC_ASSETS_PATH: "../rd_ui/dist/"
    REDASH_LOG_LEVEL: "INFO"
    REDASH_REDIS_URL: "redis://redis:6379/0"
    REDASH_DATABASE_URL: "postgresql://postgres@postgres/postgres"
    REDASH_COOKIE_SECRET: veryverysecret
redis:
  image: redis:2.8
postgres:
  image: postgres:9.3
  volumes:
    - ./postgres-data:/var/lib/postgresql/data
redash-nginx:
  image: redash/nginx:latest
  ports:
    - "80:80"
  links:
    - redash

이상

좋은 웹페이지 즐겨찾기