やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

Raspbian stretch にdocker-composeでGiteaをインストールする方法

 前回の記事を手順にまとめる。

対象環境

  • Raspbierry pi 3 Model B+
  • Raspbian stretch 2018-06-27
    • Docker 18.06.1-ce, build e68fc7a
    • docker-compose 1.23.0dev, build 48a6f213

情報源

前回

 失敗しながらで紛らわしいので今回手順をまとめる。

前提

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker-compose      armhf               13e9175812a1        47 hours ago        1.05GB
jsurf/rpi-mariadb   latest              66f523dae746        5 days ago          289MB
python              3.6                 4af1ba713e0d        3 weeks ago         736MB
kapdap/gitea-rpi    latest              927594b7bb8c        2 months ago        100MB

方法

手順

  1. docker-compose.ymlファイル作成
  2. docker-composeでインストール&起動
  3. ブラウザでインストール
  4. 他PCからアクセス
  5. 再起動
  6. 設定

1. docker-compose.ymlファイル作成

$ cd ~/
$ leafpad ./docker-compose.yml
  1. テキストエディタleafpadで以下の内容をコピペする
  2. Ctrl+Sキー押下して保存する
version: "2"

networks:
  gitea:
    external: false

services:
  server:
    image: kapdap/gitea-rpi:latest
    environment:
      - USER_UID=1000
      - USER_GID=1000
    networks:
      - gitea
    volumes:
      - ./gitea:/data
    ports:
      - "3000:3000"
      - "222:22"
    depends_on:
      - db

  db:
    image: jsurf/rpi-mariadb
    environment:
      - MYSQL_ROOT_PASSWORD=gitea
      - MYSQL_USER=gitea
      - MYSQL_PASSWORD=gitea
      - MYSQL_DATABASE=gitea
    networks:
      - gitea
    volumes:
      - ./mysql:/var/lib/mysql

 なお、マシン起動と同時にGiteaサーバアプリを起動させたいならrestart: alwaysを追記すること。

services:
  server:
    ...
    restart: always
    ...

  db:
    ...
    restart: always
    ...

2. docker-composeでインストール&起動

$ cd ~/
$ docker-compose up -d

 コンテナの状態が以下のようになる。

$ docker-compose ps
          Name                        Command               State                      Ports                   
---------------------------------------------------------------------------------------------------------------
pi_db_1_69bcb8c6e23f       docker-entrypoint.sh mysqld      Up      3306/tcp                                   
pi_server_1_d05868603e29   /usr/bin/entrypoint /bin/s ...   Up      0.0.0.0:222->22/tcp, 0.0.0.0:3000->3000/tcp

3. ブラウザでインストール

  1. ブラウザ起動
  2. URL欄にlocalhost:3000(127.0.0.1:3000)を入力しEnterキー押下する
  3. Giteaインストール画面が表示される
    f:id:ytyaru:20181002152502p:plain
  4. パスワードgiteaを入力する
  5. ホストdb:3306を入力する
  6. Gitea をインストールボタンをクリックする
    f:id:ytyaru:20181002152602p:plain
  7. ログイン画面が表示される(約50秒後)
    f:id:ytyaru:20181002152637p:plain

4. 他PCからアクセス

  1. GiteaをインストールしたマシンのIPアドレスを確認する
  2. 他マシンでIPアドレス:3000にアクセスする

4-1. IPアドレス確認

$ ip a
...
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether b8:27:eb:7c:a9:49 brd ff:ff:ff:ff:ff:ff
    inet 192.168.11.9/24 brd 192.168.11.255 scope global wlan0
       valid_lft forever preferred_lft forever
    inet6 fe80::2eee:d7ae:f774:8b1c/64 scope link 
       valid_lft forever preferred_lft forever
...

 192.168.11.9。ここにアクセスする。

4-2. アクセスする

  1. 他のPC(ラズパイ)を起動する
  2. ブラウザを起動する
  3. URL欄に192.168.11.9:3000を入力してEnterキー押下する
  4. Giteaのページが表示される
    f:id:ytyaru:20181002155700p:plain

 成功。Giteaサーバできあがり。

5. 再起動

 docker-compose.ymlrestart: alwaysと記述したなら不要。

 OS再起動するとサービスは停止している。再び起動するにはdocker-compose.ymlがあるパスでdocker-compose restartコマンドを実行する。

 現状、サービスはExitで停止している。

$ docker-compose ps
          Name                        Command                State     Ports
----------------------------------------------------------------------------
pi_db_1_69bcb8c6e23f       docker-entrypoint.sh mysqld      Exit 137        
pi_server_1_d05868603e29   /usr/bin/entrypoint /bin/s ...   Exit 0          

 restartコマンドで再起動する。

$ docker-compose restart
Restarting pi_server_1_d05868603e29 ... done
Restarting pi_db_1_69bcb8c6e23f     ... done

 StateUpになった。起動成功。

$ docker-compose ps
          Name                        Command               State                      Ports                   
---------------------------------------------------------------------------------------------------------------
pi_db_1_69bcb8c6e23f       docker-entrypoint.sh mysqld      Up      3306/tcp                                   
pi_server_1_d05868603e29   /usr/bin/entrypoint /bin/s ...   Up      0.0.0.0:222->22/tcp, 0.0.0.0:3000->3000/tcp

 このマシンのIPアドレスにアクセスすればGiteaサーバとして動く。

6. 設定

  • docker-compose.ymlがあるディレクトリ/gitea/gitea/app.ini

 このファイルで設定を変更できる。

 ROOT_URLは作成したリポジトリgit pullするときのアドレスに使われる。他のサーバからアクセスするなら、以下を変更すべし。

before

[server]
SSH_DOMAIN       = localhost
DOMAIN           = localhost
HTTP_PORT        = 3000
ROOT_URL         = http://localhost:3000/

after

[server]
SSH_DOMAIN       = 192.168.11.9
DOMAIN           = 192.168.11.9
HTTP_PORT        = 3000
ROOT_URL         = http://192.168.11.9:3000/

 なお、IPアドレスip aコマンドで確認すること。

 編集できたら、おそらく再起動すべき。

$ cd ~
$ docker-compose restart
Restarting pi_server_1_d05868603e29 ... done
Restarting pi_db_1_69bcb8c6e23f     ... done

 これで指定したアドレスでgit pullできるはず。

 git pullできなかった。かわりにgit cloneできた。

$ git pull http://192.168.11.9:3000/ytyaru/test_20181004.git
fatal: Not a git repository (or any parent up to mount point /tmp)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).

 ただ、なぜかユーザ名とパスワードを求められた。

$ git clone http://192.168.11.9:3000/ytyaru/test_20181004.git
Cloning into 'test_20181004'...
Username for 'http://192.168.11.9:3000': ytyaru
Password for 'http://ytyaru@192.168.11.9:3000': 
remote: Counting objects: 5, done.
remote: Compressing objects: 100% (5/5), done.
remote: Total 5 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (5/5), done.
Checking connectivity... done.