DevContainerな開発環境整備:問題解決から学ぶ教訓
皆さん、こんにちは!今日は少し風変わりな開発環境の話をしようと思います。特に、最近でもないけどDevContainerを使った開発で直面した解決策をシェアしたいと思います。
1. DevContainerで開発したい!(突然の対応外宣告by自分)
5,6年前からある環境をDevContainerに対応して開発した思いを胸に私の冒険は始まりました。しかし、VSCodeが愛用のDockerのLinuxバージョンを支持してくれない(昔のVSCodeにしたらいいよ的な記事が見つかるけど、そんなんいやや・・・)という状態です。フレームワークとPHPのマイナーバージョンを調整して、ギリギリのアップデートを敢行!これで一件落着かと思いきや…
2. Alpine Linuxのアップグレード
賛否両論あるAlpine Linuxですが、バージョン3.13から3.16へバージョンアップ!すると、いきなり環境から怒られました。まるで「何してくれてんの!」と言わんばかりに。
3. パッケージ管理の波乱
最初の一撃は、「nodejs-npmなんて無い」というクレーム。Alpineでnodejsとnpmを別々にapk add
でインストールし直しました。「お、おう…そう来るか」という感じです。
4. iconvの逆転
そして、iconvの挑戦!今までは明示的に指定しなければいけなかったのが、最新のAlpineではデフォルトで入っているという新事実に直面。これまでの手間が一転して、「え、指定不要なん?」と驚きの一幕。結果、無用な指定から解放された?瞬間でした。
5. npmのバージョン上がって・・・
さらに、npmのバージョンも一緒にあがるもんだから、「npm npm lockfileversion 2」で!みたいなエラーが、、、でも上げると、色々つらいんです。アプリケーション動かなくなるの嫌です。今回の環境は、一時的なもので最終的に作り直すんだから、今回はnodeのパッケージ上げたりしたく無いです・・・ってことで、強制的に
npm install -g npm@v6.14.18
とかしておく(セキュリティとか、今回は度外視で!)。
6. SSHとGitの戦い
最後に、SSHを使ったGit操作。これがまた厄介で、Dockerでssh入らんし!と思いつつもopenssh-client
を追加しないと、いい感じに鍵やconfigの設定してくれない。ので、追加!
(コマンド保管とかは、、、まだしてくれないので、いい感じの方法を見つけないとな🧐)
まとめ
はい、というわけで私のDevContainer設定の旅は、一筋縄ではいかない挑戦の連続でしたが、なんとか理想?の環境を構築できました。この経験から学んだのは、「準備は入念に、そしてトラブルは楽しんで乗り越えよう!」です。
皆さんも自分の開発環境に何か変更を加える際は、この記事がちょっとした道標になれば嬉しいです。もし同じような問題に直面したら、ぜひ参考にしてくださいね。
それでは、Let's Happy coding!
Discussion