無気力生活 (ノ ´ω`)ノ ~゜

脱力系エンジニア。てきとーに生きてます。

wsl2でdocker-composeの風を感じてみる

最近、Linuxノートを利用して作業しているんですが、いいですねLinux。とても軽くて使いやすい。
エンジニアからすればこれほんと最高な環境だと思います(`・ω・´)

PCはこれ使ってます。eBayで4万くらいで買いました。
CPUのベース900MHzなので、Intelli JといくつかのDockerコンテナ立ち上げるとかなり辛さありますが、この程度のスペックでもRails開発はできています。



しかし、Linuxを使ってると、しんどいことがちらほら

  • ドライバ周り基本問題ないけど、USBハブのHDMIを使うとき認識しなかったりと微妙にハマりポイントがある
    • displaylinkとかenviとか触ってみたけど解決できず。本体のHDMI-microポート使ってなんとか回避してます。2、3度端子折りましたけど...
  • もともとManjaro LXDEでインストールした環境にi3wmを後から入れたため、GUIの設定周りが使えずコマンドラインで頑張ることになり、環境構築に時間が取られる
    • キーリピートとかキーバインドとかディスプレイ操作とか
    • ただしLinux操作の知識が多少ついた。学習という意味では無しではないが、ただ開発できる最低限の環境が欲しかっただけなのだ(´・ω・`)
  • Adobe系ソフト、Unityなどが使えない
    • 最近はWEBも便利で代替も生まれてきてますが、代替できないのもある。
    • モバイルに求めるものじゃないのかもしれないので優先度は低いんですが、いざ使うとなったときに選択肢がない



と、いろいろとめんどいことが発生するのです(´・ω・`)

多分おとなしくUbuntuいれておけば、ドライバの問題とか基本的な操作の部分は問題ないんでしょうか...外で気軽にコーディングするための環境がほしいだけなのに、いろいろと設定調べて反映していくの、ちょっと疲れますね、楽しいけど。



さて、そういうこともありLinux以外の選択肢を考えてみようと思ってました。とはいえ最近のMacはなんか微妙(´・ω・`) キーボードとか、3面ディスプレイの認識が不安定とか、ハードウェアのコスパが辛いとか。値段の問題もあるし。

そんなことを数ヶ月前からウンウン考えていたんですが、先月くらいにこんな記事が。

www.softantenna.com

以前、wslでdocker最低限動く記事を書きました。

gdgd-shinoyu.hatenablog.com

あのときはdocker-compose動かなかったのです。しかしwsl2ではLinuxのエミュレートではなく、Linuxカーネルが動いてます。そう、ここには普通のLinuxが存在しているのです。つまりdocker-composeも普通に動く。



最近の開発だと、Dockerさえちゃんと動けばどんなOS上でも開発は困りません。WindowsにちゃんとDocker動く環境が来てしまえば、Windowsに戻ってしまうのもありかなーと思ってます。



ここまでダラダラと書いてきましたが、結論としては、wsl2で問題なくdocker-composeが使えますよ!というお話でした。

# docker, docker-compose を最新のものに切り替えておく

# uname -a
Linux 4.19.43-microsoft-standard #1 SMP Sat Jun 1 16:36:16 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

sudo service docker start                                                                                                                                                                                             
 * Starting Docker: docker
   ...done.

docker-compose up

Starting etl_digdag_1 ... done
Starting etl_db_1     ... done
Attaching to etl_digdag_1, etl_db_1
digdag_1  | Error: Unable to access jarfile /usr/local/bin/digdag
db_1      | 190724 17:28:31 [Note] mysqld (mysqld 10.0.35-MariaDB-1~xenial) starting as process 1 ...db_1      | 190724 17:28:31 [Note] InnoDB: Using mutexes to ref count buffer pool pages
db_1      | 190724 17:28:31 [Note] InnoDB: The InnoDB memory heap is disabled
db_1      | 190724 17:28:31 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
db_1      | 190724 17:28:31 [Note] InnoDB: GCC builtin __atomic_thread_fence() is used for memory barrier
db_1      | 190724 17:28:31 [Note] InnoDB: Compressed tables use zlib 1.2.8
db_1      | 190724 17:28:31 [Note] InnoDB: Using Linux native AIOdb_1      | 190724 17:28:31 [Note] InnoDB: Using CPU crc32 instructionsdb_1      | 190724 17:28:31 [Note] InnoDB: Initializing buffer pool, size = 256.0Mdb_1      | 190724 17:28:31 [Note] InnoDB: Completed initialization of buffer pool
...