Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dockerfile (Linux)・GitHub Actionsによる自動pushの追加 #84 #88

Merged
merged 37 commits into from
Sep 12, 2021

Conversation

aoirint
Copy link
Member

@aoirint aoirint commented Sep 12, 2021

ref: #84

実装

  • CPU(ベースイメージ:ubuntu)で動作するイメージ
  • GPU(ベースイメージ:nvidia/cuda)で動作するイメージ
  • DockerイメージをGitHub ActionsでビルドしてDocker Hubにデプロイ
  • GitHub Releases作成時にバージョン付きタグでDocker Hubにデプロイ
  • Pythonバージョンの固定、build-arg化(Python 3.7.x)
  • 一般ユーザで実行

確認

  • run.pyをnuitkaでビルドするか、しないか
    • 現在は、イメージビルド時間短縮のため、ビルドしない実装になっています
  • Dockerイメージのデプロイ先
    • Docker Hub
  • イメージ名aoirint/voicevox_engineの変更(変更案:voicevox/voicevox_engineまたはhiroshiba/voicevox_engine
    • 暫定的に自分のアカウント以下のものになっているため、用意・変更をお願いしたいです
  • Dockerイメージのビルド・デプロイタイミング
    • masterブランチにpushされたとき(latest)
    • GitHub Releasesが作成されたとき(バージョン付きタグ)
  • buildkitでビルドしているのはキャッシュのためです
  • coreパッケージ作成のため、voicevox_coreリポジトリのexample/python/setup.pyを利用していますが、example側を改変しにくくなるのでよくないかもしれません

Dockerイメージのデプロイ先の候補

  • Docker Hub
  • GitHub Container Registry (ghcr.io)
  • ほか

現在、Docker HubのみWorkflowのStepを用意しています。

Docker Hubは、Freeアカウント(Docker Personal)ではアクセストークンを1アカウントにつき1つしか発行できないため、
既存の個人アカウントを使うとスコープの分離ができない懸念があります。

Docker Hubのアクセストークンにはイメージの説明(Overviewに表示される文章)を更新する権限がないため、
README.mdと同期させたい場合は、手動で更新が必要です。

メンテナ側で必要な設定

GitHub Secretsの設定

  • DOCKERHUB_USERNAME
  • DOCKERHUB_TOKEN

https://hub.docker.com/settings/security

上記URLで生成したアクセストークンをDOCKERHUB_TOKENとして、GitHub Secretsに登録する必要があります。
また、Docker Hubのアカウント名をDOCKERHUB_USERNAMEとして、GitHub Secretsに登録する必要があります。

@aoirint aoirint changed the title Docker (Linux) #84 Docker (Linux)のDockerfile・GitHub Actionsによる自動デプロイの追加 #84 Sep 12, 2021
@aoirint aoirint marked this pull request as ready for review September 12, 2021 15:42
@aoirint aoirint changed the title Docker (Linux)のDockerfile・GitHub Actionsによる自動デプロイの追加 #84 Docker (Linux)のDockerfile・GitHub Actionsによる自動pushの追加 #84 Sep 12, 2021
@aoirint aoirint changed the title Docker (Linux)のDockerfile・GitHub Actionsによる自動pushの追加 #84 Dockerfile (Linux)・GitHub Actionsによる自動pushの追加 #84 Sep 12, 2021
Copy link
Member

@Hiroshiba Hiroshiba left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

非常に素晴らしいです。とても勉強になります。

run.pyをnuitkaでビルドするか、しないか

いったんnuitka無しで良いと思います。
(nuitkaはキャッシュが効かないので毎回ビルドに数十分ほどかかり、actionsが耐えられないと思われます。)

voicevox_coreリポジトリのexample/python/setup.pyを利用しています

いったん良いと思います。のちのちengine用のsetup.pyを設けたいですね。

暫定的に自分のアカウント以下のものになっているため、用意・変更をお願いしたいです

承知しました。
まだvoicevoxをorg化できていないので、やり方把握も兼ねていったん自分のトークンを使う予定です。

Dockerfile Show resolved Hide resolved
Dockerfile Show resolved Hide resolved
Copy link
Member

@Hiroshiba Hiroshiba left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM! 名前をHiroshibaに変更してから取り込みます。
(最終コミッターは僕になりますが、もちろん貢献者リストに掲載させて頂きます。)

@Hiroshiba
Copy link
Member

こちらから書き換えられないこともあるんですね・・・
すみません、一旦取り込んでからすぐに置き換えます。

@Hiroshiba Hiroshiba merged commit c692758 into VOICEVOX:master Sep 12, 2021
@aoirint
Copy link
Member Author

aoirint commented Sep 12, 2021

こちらから書き換えられないこともあるんですね・・・
すみません、一旦取り込んでからすぐに置き換えます。

こちらにはAllow edits and access to secrets by maintainersという項目が表示されていて、おそらくこれをOFFにしていたせいですね..

私のリポジトリの方に設定していた、Docker Hubに書き込めるSecretsが読めてしまうように見えたので、あまりよくないと思ってOFFにしていました(これは勘違いかもしれません)。お手数おかけします。

@Hiroshiba
Copy link
Member

へーーー editとaccess to secretが分かれてないんですね。
なるほどです、ご教示ありがとうございます!

@aoirint aoirint deleted the patch-linux-docker branch September 12, 2021 18:56
aoirint added a commit to aoirint/voicevox_engine that referenced this pull request Sep 13, 2021
* linux docker

* add workflow to build linux docker

* update dockerhub description automatically

* fix ld.so.conf.d directory name

* use python3 instead python

* call ldconfig

* remove hub desc update because token cannot be used

* install core package

* install libtorch

* add doc: github secrets

* force update ldconfig cache

* docker cpu execute command in Makefile

* lock python version 3.7.12 (self compile)

* remove dev requirements install

* general user execution with gosu

* add .PHONY to Makefile

* versioned image deploy

* fix workflow: image tag

* fix workflow: image tag

* fix cache step

* on.push.branches

* fix cache

* fix docker tag version order

* revert image tag version order

* simple tag formatting

* fix head hyphen tag name

* fix head hyphen tag name

* fix head hyphen tag name

* cache per base image

* one step multi tags (cache overflow)

* registry cache

* run build-docker on push master

* fix doc: -latest

* fix doc: whitespace

* update ldconfig on container start

* cat voicevox core README on container start

* cat README to stderr
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants