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

Setup devcontainer #76

Merged
merged 11 commits into from
May 17, 2022
Merged

Setup devcontainer #76

merged 11 commits into from
May 17, 2022

Conversation

Hiroya-W
Copy link
Contributor

@Hiroya-W Hiroya-W commented Apr 28, 2022

概要

LaTeX と Python + Poery環境が使えるdevcontainerを作成しました。
LaTeXを必要とするテストが

make test USE_LATEX=yes

で実行できるので、テストが実行できることを確認して欲しいです。

気にしたこと

コンテナ内の実行ユーザーとホストのユーザーのUID/GIDを一致させる

  • docker-composeした時に、docker-compose.ymlと同じディレクトリにある.envを読み込んでくれるので、devcontainer.jsoninitializeCommandinit.shを実行し、.envにホストのUID/GIDを出力するようにしている
  • docker-compose.ymlではargsで渡し、DockerfileではARGで受け取れる
  • 参考:https://qiita.com/noonworks/items/472008c25a20d0598505

Volume mountした.venvフォルダの所有権をrootから一般ユーザとして用意しているvscodeユーザに変更する

  • vscodeユーザでもPython仮想環境を作成して、.venvに書き込めるようにするため
  • 所有権を変更すれば良いが、devcontaier.jsonpostStartCommandで実行するので、vscodeユーザでsudo chown vscode .venvを実行したい。しかし、sudoが無いので、gosuを使った。
  • gosuそのまま使っても、rootユーザとして実行出来なかった
gosu root chown vscode .venv
error: failed switching to "root": operation not permitted

となってしまう。

  • そこで、Use with a non-root user? tianon/gosu#11 を参考に、Dockerfileで事前にchmod +s /usr/sbin/gosuするようにして解決した。しかし、この対処が正しいのかどうかが分かっていない(こんなことをしなくてもgosuは使えるんじゃないかなと思っている)。

Copy link

@KowerKoint KowerKoint left a comment

Choose a reason for hiding this comment

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

問題なさそうです!

Copy link

@ikanago ikanago left a comment

Choose a reason for hiding this comment

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

devcontainer でテストしてすべてパスしました.
qulacs-osaka のほうでは base image がよしなにしてくれているのか postStartCommandsudo が使えるんですよね...

@ikanago
Copy link

ikanago commented May 10, 2022

前に作った Docker image では entrypoint.sh で gosu を噛ませているんですが,gosu を実行しているのは root なので今回のケースとは違いました.Dockerfile で chmod するのは仕方なさそうな気がします.

@kotamanegi
Copy link

Step 11/13 : RUN useradd -u $UID -o -m $USERNAME
 ---> Running in 60e1ab21e3bb
useradd: invalid user ID '-o'

このようなエラーが出てビルドに失敗しました…
原因究明を進めます。

@Hiroya-W
Copy link
Contributor Author

Step 11/13 : RUN useradd -u $UID -o -m $USERNAME
 ---> Running in 60e1ab21e3bb
useradd: invalid user ID '-o'

このようなエラーが出てビルドに失敗しました… 原因究明を進めます。

@kotamanegi
シェルスクリプトの改行コードがLFになるように、.gitattributeを追加しました。174106e (#76)
ブランチをcheckoutしなおしてinit.shのファイルを作り直すなど、改行コードがLFになっていることを確認した上で再度試してみてほしいです!

Copy link

@kotamanegi kotamanegi left a comment

Choose a reason for hiding this comment

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

OKです:+1:
うまくテストが通ることを確認できました!

@Hiroya-W Hiroya-W linked an issue May 17, 2022 that may be closed by this pull request
@Hiroya-W Hiroya-W merged commit 8b204a9 into main May 17, 2022
@Hiroya-W Hiroya-W deleted the 75-devcontainer branch May 19, 2022 07:47
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.

devcontainerの対応
4 participants