search
LoginSignup
0

posted at

updated at

Alpineコンテナの中でエイリアスを自動設定する

はじめに

普段Railsを扱うことが多いのですが、他の方が作成したRails環境を触ったところRailsコマンドや、Rspecなどを実行するときに、最初にbundle execをつけないと実行できなかったためかなりストレスに感じて、手入力でエイリアスを張っていましたがこれを自動化するにはどうすればよいのだろうと考え、できるようになったためまとめます。

問題

実際に動作していたRailsコンテナの中で起動時にエイリアスをはる設定をする障害になっていたのが

  • Alpine Linuxを利用していた (.bashrcが存在しない)
  • コンテナの中にはいるとrootユーザーではないユーザーでログインすることになる (/root以下をみることができない)

というところでした。またbashコマンド自体は入っていないので、どうすればエイリアスを張ればよいのだろうという状況でした。

解決方法

/env/profileを用いてエイリアスを張ることでうまくいきました。

まず.aliasを作成しました。この中にはエイリアスのコマンドを書いておきます。

.alias
alias rspec='bundle exec rspec'
alias rails='bundle exec rails'
alias rubocop='bundle exec rubocop'

このファイルをコンテナにコピーして、/etc/profileに追記するような処理をDockerfileに追加します。

Dockerfile
ENV ENV="/etc/profile"
COPY .alias ./
RUN cat .alias > "$ENV"

ちなみに以下はエイリアスが効いていませんでした

Dockerfile
COPY .alias ./
RUN cat .alias > /etc/profile

おわりに

Alpineを利用したRailsプロジェクトの場合起こることがあると思ったのでまとめてみました。
ネットの情報があるようでなく、思ったよりも時間がかかりましたが無事時間の短縮ができるようになりました。
そもそもbundle execをつけないようにバージョン管理はしたいところです。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
0