オフライン環境のDockerでAlfrescoを立ち上げる

# 概要
dokcer-composeとdockerイメージを取得し、オフライン環境で起動する。


- **オンライン環境作業**
    - docker-composeの取得
    - dockerイメージをpullで取得
    - 取得したdockerイメージをtarで圧縮

- **オフライン環境作業**
    - docker-composeの導入
    - dockerイメージを展開
    - docker-composeコマンドでコンテナ起動


## オンライン環境作業
初めにdocker-composeを取得する。

```bash
## docker-composeをgitから取得
sudo curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` -o /tmp/docker-compose

## ファイル確認
$ ls -l /tmp/docker-compose
-rw-r--r-- 1 root     root       11750136 Mar 19 08:24 docker-compose
```

あわせて、必要な3つのイメージを取得する。

- webcenter/rancher-alfresco:v5.1-201605-1
- alpine
- postgres:9.4


```bash
## webcenter/rancher-alfresco:v5.1-201605-1
$ docker pull webcenter/rancher-alfresco:v5.1-201605-1

## alpine
$ docker pull alpine

## postgres:9.4
$ docker pull postgres:9.4

## イメージ取得後の確認
$ docker images
REPOSITORY                   TAG                 IMAGE ID            CREATED             SIZE
postgres                     9.4                 ed5a45034282        4 weeks ago         251MB
alpine                       latest              e7d92cdc71fe        2 months ago        5.59MB
webcenter/rancher-alfresco   v5.1-201605-1       c76b4794cf11        3 years ago         2.14GB
```

続いて、[公式ドキュメント](https://docs.docker.com/engine/reference/commandline/save/)にある通り、dockerイメージをtarファイルに出力する。


```bash
## dockerイメージをtarにする
$ docker save postgres:9.4 webcenter/rancher-alfresco:v5.1-201605-1 alpine > alfresco.tar

## ファイル確認
$ ls -l alfresco.tar
-rw-rw-r-- 1 root root 2435766272 Mar 19 07:41 alfresco.tar
```

ここまでで取得した以下の2ファイルをオフライン環境へ配置する。

- docker-compose
- alfresco.tar 



## オフライン環境で作業
ここからはオフライン環境での作業になる。
まずは取得したファイルが配置してあることを確認する。

```bash
## 配置確認
$ ls -l /tmp
-rw-r--r-- 1 root root 11750136 Mar 19 08:24 docker-compose
-rw-rw-r-- 1 root root 2435766272 Mar 19 07:41 alfresco.tar
```

docker-composeの導入を行う。

```bash
## bin配下にdocker-composeを配置
$ sudo mv /tmp/docker-compose /usr/local/bin/

## 実行権限を付与
$ sudo chmod +x /usr/local/bin/docker-compose

## 導入確認（バージョンが表示されること）
$ docker-compose -v
docker-compose version 1.22.0, build f46880fe
```




docker-compose.ymlは以下に書かれていたもの参考に用意。


参考：[【Docker】これは役に立つ!! docker-compose.ymlの例まとめ](https://qiita.com/okamu_/items/1c8e5fde742ca165fa12)

```yml:docker-compose.yml
alfresco:
  environment:
    CIFS_ENABLED: 'false'
    FTP_ENABLED: 'false'
  tty: true
  image: webcenter/rancher-alfresco:v5.1-201605-1
  links:
  - postgres:db
  stdin_open: true
  ports:
  - 8081:8080/tcp
  volumes_from:
    - alfresco-data
alfresco-data:
  image: alpine
  volumes:
  - /opt/alfresco/alf_data
  net: none
  command: /bin/true
postgres:
  environment:
    PGDATA: /var/lib/postgresql/data/pgdata
    POSTGRES_DB: alfrescodb
    POSTGRES_PASSWORD: password
    POSTGRES_USER: alfrescouser
  tty: true
  image: postgres:9.4
  stdin_open: true
  volumes_from:
    - postgres-data
postgres-data:
  labels:
    io.rancher.container.start_once: 'true'
  image: alpine
  volumes:
  - /var/lib/postgresql/data/pgdata
  net: none
  command: /bin/true
```



私が使用しているオフライン環境では8080ポートが使用済みのため、ポートを8081へ変更している。


いよいよ、dokcerコンテナを起動する。
docker-compose.ymlが置いてある階層で以下のコマンドを実施する。

```bash
## コンテナ起動
$ docker-compose up -d
Starting alfresco_alfresco-data_1 ... done
Starting alfresco_postgres-data_1 ... done
Starting alfresco_postgres_1      ... done
Starting alfresco_alfresco_1      ... done

## コンテナ起動確認
$ docker-compose ps
          Name                        Command              State                                            Ports
----------------------------------------------------------------------------------------------------------------------------------------------------------
alfresco_alfresco-data_1   /bin/true                       Exit 0
alfresco_alfresco_1        /bin/sh -c /app/run.sh          Up       137/tcp, 138/tcp, 139/tcp, 21/tcp, 445/tcp, 7070/tcp, 8009/tcp, 0.0.0.0:8081->8080/tcp
alfresco_postgres-data_1   /bin/true                       Exit 0
alfresco_postgres_1        docker-entrypoint.sh postgres   Up       5432/tcp
```



##最後に実際にアクセスしてみる。

ブラウザを開き、以下のアドレスを入力。
http://[オフライン環境のIPアドレス]:8081/share/page

初期ユーザ/初期パスワードはadmin/admin
![login.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/601347/e3f97a98-19b1-bb6a-9e33-1da6751a9a35.png)

以上で終了になります。

## おわりに
Qiita初投稿でした！
アウトプットを全くしてこなかったので記事にしてみました。


#####余談
私はオンライン環境にAWSを使用していました。
EBS容量不足やエンドポイントの使い方など含めて、記事には出していない問題もいくつかありました。
あと、Markdown形式の文章も初めて書いたかも。
いい学習になったかも。

**~おしまい~**