Dockerでnodeイメージでuseradd -u 1000が失敗する

-vでホストとコンテナがファイルを共有している場合、ホストのuidとコンテナのuidが一致しているとパーミッションで書き込めない問題が起こらない

ので、Dockerfileでuid=1000のユーザを作ろうとした。イメージはnode:latest

 

RUN groupadd --force -g 1000 user

RUN useradd -ms /bin/bash --no-user-group -g 1000 -u 1000 user

 

useradd: UID 1000 is not unique

こんなエラーが出る

FROMに指定したイメージにuidが1000のユーザがすでに存在するので、作ることはできない

設定を変更することは可能

 

user: '1000'

docker-compose.yamlを使っている場合、コンテナにユーザを指定可能

ユーザ名でなく、uidを指定してもログイン可能っぽい

 

 

参考

dockerfile で一般ユーザーを作成する #Docker - Qiita

Adding a non-root user with UID 1000 breaks custom builds · Issue #289 · nodejs/docker-node · GitHub

ローカルとdockerコンテナ側のUID,GIDを揃える - やる気がストロングZERO

unitypackageをfbxに変換する

  1. Unity起動
  2. メニューからWindow > Package Manager
  3. 左上のプルダウンをPackages: Unity Registryに変更
  4. FBX Exporterを検索 > install
  5. unitypackageファイルをエクスプローラからダブルクリック > Import
  6. ProjectタブのAssetsから変換したいものをHierarchyタブにD&D
  7. fbxにしたいオブジェクトをHierarchyから選択
  8. メニューからGameObject > Export To FBX
  9. ProjectタブのAssets直下にfbxが作られる

参考

Unity からの FBX ファイルのエクスポート | FBX Exporter | 4.1.2 (unity3d.com)

Dockerで環境を汚さず一時的にコマンドを使う

コマンドを実行する

docker run --rm -v "$(pwd)":/opt -w /opt イメージ名 bash -c "使いたいコマンド"

$(pwd)で今のディレクトリ指定、-wでそのディレクトリで実行。

あくまでコンテナ内で実行しているので、環境変数や使えるコマンドがコンテナにインストールされてない場合は使えない。

追加でパッケージが必要な場合

docker run --rm -v "$(pwd)":/opt -w /opt イメージ名 bash -c "インストールしたいパッケージ && 使いたいコマンド"

イメージに必要なパッケージが入ってない場合、-cでコマンドを使う前にインストールするといい。

-uでユーザを変更している場合、rootではないのでパッケージマネージャが使えない場合がある。その場合は-uを諦めて、ホスト側に生成されたファイルの所有ユーザを変更する。

パッケージ以外のカスタマイズが必要な場合

docker build . -t ビルドしたイメージ名

docker run --rm -v "$(pwd)":/opt -w /opt ビルドしたイメージ名 bash -c "使いたいコマンド"

イメージのdockerfileがGitHubなどで公開されている場合は、そのイメージをダウンロードして書き換える。

 

 

参考

PHP/Composerなしで始めるLaravel/Sail入門 

OpenAIのWhisperで動画の文字起こしをしてみる

参考:

環境構築

FROM pytorch/pytorch:1.13.1-cuda11.6-cudnn8-runtime

WORKDIR /workspace

RUN apt-get update && apt-get install -y \
    build-essential \
    gcc \
    git \
    ffmpeg \
    && rm -rf /var/lib/apt/lists/*

RUN pip install --upgrade pip

RUN pip install git+https://github.com/openai/whisper.git

docker build -t whisper .

docker run --gpus all -it -d -v $(pwd):/workspace/ --name whisper whisper

docker exec -it whisper bash

ファイル変換

ffmpeg -i hoge.mp4 hoge.mp3

文字起こし

whisper --language ja --model small hoge.mp3

GPUの占有メモリのサイズを超えたモデルは使えない

 

 

App Actions Test ToolでNoSuchMethodErrorが出る(2022/5/25時点)

原因(2022/5/18時点)

最新版のAndroid Studio(2021.2.1)を入れた後にApp Actions Test Toolのプラグインを入れると、古いバージョンが入ってしまうから。

前のバージョン(2021.1.1 Patch 3)にダウングレードするとMarketplaceでも最新版が入るので、最新のAndroid Studioを使う時はApp Actions Test Toolがアップデートされるまで待つしかなさそう。

 

Gradleのバージョンも合わせて下げないと様々な不幸に見舞われる。

App Actions Test Toolを実行すると以下のようなエラーに悩まされる(Flutterから実行したものも含まれる)

No Android Module with actions file reference found. You need one Android Module with an actions file reference.

Could not read package name from the build file.

More than one Android module with action references found. The App Actions Test tool currently supports projects with exactly one Android module with actions file references.

Gradleのバージョンも下げよう

Android StudioのFile > Project Structure >Projectから、

Android Gradle Plugin Versionを7.0.2に

Gradle Versionを7.2に

変更するとApp Actions Test Toolが実行できる。