はじめに
普段Railsを扱うことが多いのですが、他の方が作成したRails環境を触ったところRailsコマンドや、Rspecなどを実行するときに、最初にbundle exec
をつけないと実行できなかったためかなりストレスに感じて、手入力でエイリアスを張っていましたがこれを自動化するにはどうすればよいのだろうと考え、できるようになったためまとめます。
問題
実際に動作していたRailsコンテナの中で起動時にエイリアスをはる設定をする障害になっていたのが
- Alpine Linuxを利用していた (.bashrcが存在しない)
- コンテナの中にはいるとrootユーザーではないユーザーでログインすることになる (/root以下をみることができない)
というところでした。またbashコマンド自体は入っていないので、どうすればエイリアスを張ればよいのだろうという状況でした。
解決方法
/env/profile
を用いてエイリアスを張ることでうまくいきました。
まず.alias
を作成しました。この中にはエイリアスのコマンドを書いておきます。
alias rspec='bundle exec rspec'
alias rails='bundle exec rails'
alias rubocop='bundle exec rubocop'
このファイルをコンテナにコピーして、/etc/profile
に追記するような処理をDockerfile
に追加します。
ENV ENV="/etc/profile"
COPY .alias ./
RUN cat .alias > "$ENV"
ちなみに以下はエイリアスが効いていませんでした
COPY .alias ./
RUN cat .alias > /etc/profile
おわりに
Alpineを利用したRailsプロジェクトの場合起こることがあると思ったのでまとめてみました。
ネットの情報があるようでなく、思ったよりも時間がかかりましたが無事時間の短縮ができるようになりました。
そもそもbundle exec
をつけないようにバージョン管理はしたいところです。