対象環境
- Raspbierry pi 3 Model B+
- Raspbian stretch 2018-06-27
- Docker 18.06.1-ce, build e68fc7a
- docker-compose 1.23.0dev, build 48a6f213
前提
- http://ytyaru.hatenablog.com/entry/2019/06/05/000000
- http://ytyaru.hatenablog.com/entry/2019/08/07/000000
- http://ytyaru.hatenablog.com/entry/2019/08/08/000000
- http://ytyaru.hatenablog.com/entry/2019/08/09/000000
前回
2018-10-01現在、前回は存在したphreakazoid/gitea-rpiが消えている……。でもGitHubは残っている。
方法
手順
- ラズパイ用Giteaを探す
- インストール
- 起動(Docker)
- 起動(ブラウザ)
0. ラズパイ用Giteaを探す
GitHub
ソースコードからコンパイルできるのでは? でもよくわからない。リリースのバイナリgitea-1.5.1-linux-arm-7を実行しても動かなかった。
$ . /home/pi/Downloads/gitea-1.5.1-linux-arm-7 bash: .: /home/pi/Downloads/gitea-1.5.1-linux-arm-7: バイナリファイルを実行できません
Docker Hub
- https://hub.docker.com/r/kapdap/gitea-rpi/
- https://hub.docker.com/r/fkrull/gitea-rpi/
- https://hub.docker.com/r/argon99/gitea-rpi/
kapdap/gitea-rpiにする。arm7l
とあったのでraspberry pi 3B+用と思われる。
1. インストール
docker pull kapdap/gitea-rpi
Digest: sha256:42b2f5e364362d7641db8ed286ba277fb8d0083c45152565c3efad84c0e4e44b Status: Downloaded newer image for kapdap/gitea-rpi:latest
2. 起動(Docker)
$ docker run \ -d \ --name gitea \ --link mariadb-gitea:mysql \ -p 22:22 \ -p 3000:3000 \ -v /opt/gitea/data \ kapdap/gitea-rpi
フラグ | ヘルプ | 意味 |
---|---|---|
-d |
Run container in background and print container ID |
バックグラウンドで起動 |
--name |
Assign a name to the container |
コンテナ名を設定する |
--link |
Add link to another container |
別のコンテナを参照する |
-p |
Publish a container's port(s) to the host |
コンテナのポートをホストに公開する |
-v |
Bind mount a volume |
ホストの任意パスをコンテナの任意パスにマウントする |
docker run -d -p 22:22 -p 3000:3000 -v gitea_data:/data kapdap/gitea-rpi
エラー。mariadb-gitea
が起動していないとリンクできないらしい。
c395c90d08f4dcc8a4ff89ca14deffa3b08c7a4e8e691fb7f751829d0a09c65c docker: Error response from daemon: Cannot link to a non running container: /mariadb-gitea AS /gitea/mysql.
mariadb-gitea
コンテナの状態を確認するとExited
になっている。これを起動させたい。
$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c395c90d08f4 kapdap/gitea-rpi "/usr/bin/entrypoint…" About a minute ago Created 0.0.0.0:22->22/tcp, 0.0.0.0:3000->3000/tcp gitea 8a52d56985d3 jsurf/rpi-mariadb "docker-entrypoint.s…" 13 hours ago Exited (255) 13 hours ago 3306/tcp mariadb-gitea
再起動する。
$ docker restart mariadb-gitea mariadb-gitea
コンテナの状態を確認するとUp
になった。OK。
$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c395c90d08f4 kapdap/gitea-rpi "/usr/bin/entrypoint…" 4 minutes ago Created 0.0.0.0:22->22/tcp, 0.0.0.0:3000->3000/tcp gitea 8a52d56985d3 jsurf/rpi-mariadb "docker-entrypoint.s…" 13 hours ago Up 4 seconds 3306/tcp mariadb-gitea
再びgitea起動コマンドを打つも別のエラー。gitea
というコンテナ名はすでに存在していると怒られた。
docker: Error response from daemon: Conflict. The container name "/gitea" is already in use by container "c395c90d08f4dcc8a4ff89ca14deffa3b08c7a4e8e691fb7f751829d0a09c65c". You have to remove (or rename) that container to be able to reuse that name. See 'docker run --help'.
再起動コマンドを実行してみると成功したっぽい。
$ docker restart gitea gitea
$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c395c90d08f4 kapdap/gitea-rpi "/usr/bin/entrypoint…" 9 minutes ago Up About a minute 0.0.0.0:22->22/tcp, 0.0.0.0:3000->3000/tcp gitea 8a52d56985d3 jsurf/rpi-mariadb "docker-entrypoint.s…" 14 hours ago Up 5 minutes 3306/tcp mariadb-gitea
3. 起動(ブラウザ)
ブラウザのURL欄にhttp://0.0.0.0:3000
を入力すると以下インストール画面が表示された。
DockerでGiteaを稼動する場合は、このページに変更を加える前に、 ガイドラインをよく読んでください。
と書いてあったのでガイドラインを読んでみた。が、今回の場合に当てはまらない。
- imageファイルが
gitea/gitea:latest
。ラズパイでは動かない docker-compose
を使っている
ボリュームの/gitea:/data
が気になる。:
が不要だと思って外したのだが、何か特殊な意味でもあるのか?
インストールしようとしたがエラー。
データベース設定が無効:dial tcp 127.0.0.1:3306: connect: connection refused
事前にデータベースを作成しておかないとダメなのかな?
設定は以下の通り。パスワードしか入力していない。あとはデフォルト。
初期設定
データベース設定
項目 | 値 |
---|---|
データベースの種類 | MYSQL |
ホスト名 | gitea |
ユーザ | gitea |
パスワード | (任意のパスワード) |
データベース名 | gitea |
MySQLではエンジンがINNODB、文字セットがutf8_general_ciである必要があります。
とある。なんのこっちゃ?
アプリケーション全般設定
項目 | 値 | 補足 |
---|---|---|
アプリケーション名 | Gitea: Git with a cup of tea | 組織の名前を入力してください。 |
リポジトリのルートパス | /data/git/gitea-repositories | すべてのGitリモートリポジトリはこのディレクトリに保存されます。 |
LFSルートパス | /app/gitea/data/lfs | Git LFSによってこのディレクトリにファイルが保存されます。空欄にするとLFSを無効にします。 |
実行ユーザ | git | 実行ユーザーはリポジトリルートパスへのアクセス権限、およびGiteaを実行する権限をもつ必要があります。 |
ドメイン | localhost | これはSSH用クローンURLに影響します。 |
SSH ポート | 22 | SSHサーバーを使用する場合はポート番号を入力してください。 空白にした場合は無効化されます。 |
HTTP ポート | 3000 | アプリケーションが待ち受けするポート番号。 |
アプリケーションの URL | http://localhost:3000/ | HTTP/HTTPSのクローンURL、および一部のEメール通知に影響します。 |
ログのパス | /app/gitea/log | ログファイルを書き込むディレクトリ。 |
MariaDBでデータベースを作成する
前回はユーザ名: root
, パスワード: $MYSQL_PORT_3306_TCP_PORT
でいけた。パスワードの変数値が何なのかはわからない。
docker run -it --link mariadb-gitea:mysql --rm jsurf/rpi-mariadb sh -c 'exec mysql -h"$MYSQL_PORT_3306_TCP_ADDR" -P"$MYSQL_PORT_3306_TCP_PORT" -u root -p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD"'
もし以下のようなエラーが出たら、mariadb-gitea
を起動させる。
docker: Error response from daemon: Cannot link to a non running container: /mariadb-gitea AS /nifty_aryabhata/mysql.
$ docker restart mariadb-gitea mariadb-gitea
docker run ...
が成功すると、数秒後に以下のように表示される。
Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 3 Server version: 10.0.36-MariaDB-0+deb8u1 (Raspbian) Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]>
こちらにあるようにデータベースとユーザを作成する。
パスワードをgitea
にして以下のコマンドを実行する。
項目 | 値 |
---|---|
データベース名 | gitea |
ユーザ名 | gitea |
パスワード | gitea |
MariaDB [(none)]> CREATE DATABASE `gitea` DEFAULT CHARACTER SET `utf8mb4` COLLATE `utf8mb4_general_ci`; MariaDB [(none)]> CREATE USER `gitea`@'localhost' IDENTIFIED BY 'gitea'; MariaDB [(none)]> GRANT ALL PRIVILEGES ON `gitea`.* TO `gitea`@`localhost`; MariaDB [(none)]> \q
Query OK, 1 row affected (0.56 sec) Query OK, 0 rows affected (0.13 sec) Query OK, 0 rows affected (0.01 sec) Bye
関係するコンテナをすべて再起動する。
$ docker restart mariadb-gitea gitea mariadb-gitea gitea
$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c395c90d08f4 kapdap/gitea-rpi "/usr/bin/entrypoint…" 5 hours ago Up About a minute 0.0.0.0:22->22/tcp, 0.0.0.0:3000->3000/tcp gitea 8a52d56985d3 jsurf/rpi-mariadb "docker-entrypoint.s…" 19 hours ago Up About a minute 3306/tcp mariadb-gitea
ブラウザlocalhost:3000
にアクセス。パスワードにgitea
を入力してGitea をインストール
ボタン押下する。
また同様のエラー。
データベース設定が無効:dial tcp 127.0.0.1:3306: connect: connection refused
どうすればインストールできるのか……。
環境ちがうけど以下が参考にならないか。
Dockerのネットワーク問題?
Go言語とMySQL間のネットワーク問題?
If the database was started with the
docker-compose
setup as documented above please note thatdb
must be used as the database hostname.上記のように
docker-compose
の設定でデータベースを起動した場合は、データベースホスト名としてdb
を使用しなければならないことに注意してください。
docker-compose
の表記とdockerコマンドの対応がわからないが、たぶんdb
はコンテナ名のことだろう。
- https://github.com/go-gitea/gitea/issues/1362
- https://docs.gitea.io/en-us/install-with-docker/#install
私の環境ではMariaDBを入れたコンテナの名前はmariadb-gitea
。なので、mariadb-gitea:3306
にしてみたがダメ。mysql:3306
にしてもダメだった。
データベース設定が無効:Error 1045: Access denied for user 'gitea'@'172.17.0.3' (using password: YES)
Giteaの公式ではDockerでのインストールにdocker-composeを使っている。これに倣うべきなのか?