Alpine Linuxログイン用の起動スクリプトは何ですか? (ログイン時にエイリアスが必要です)

Alpine Linuxログイン用の起動スクリプトは何ですか? (ログイン時にエイリアスが必要です)

Dockerコンテナの場合、Node:AlpineなどのAlpine Linuxを使用して画像をできるだけ小さく保ちます。しかし、時にはコンテナにログインしたいことがあります。このコンテナにエイリアスを置くと便利です。

標準のLinuxを使用している場合は、.bashrcを/root/.bashrcにマップし、すべてのエイリアスを使用できるようにします。

しかし、Alpine Linixに対応する.bashrcが見つかりません。

私は試した:

  • .bashrc
  • .bash_config ファイル
  • 。輪郭
  • .ash_profile
  • .ashrc

すべて動作しません。

追加情報

Alpine LinuxはDockerコンテナから起動します。

ドッカーファイル

FROM node:alpine

ENV NODE_ENV production

WORKDIR /usr/src/app

COPY --from=builder /usr/src/app/build .

ログインコンテナ

ホストコンピュータ(マイOSX Macbook)で次のコマンドを使用します。

docker exec -it <containerName> /bin/sh

docker-compose.yml

  jobrunner:
    build:
      context: ./build
      dockerfile: Dockerfile
    image: jobrunner:1.0
    volumes:
      - ./deployment/jobs/root/.bashrc:/root/.bashrc
      - ./deployment/jobs/root/.bashrc:/root/.profile
      - ./logs:/usr/src/app/logs
      - ./data:/usr/src/app/data
    environment:
      NODE_ENV: production
    restart: unless-stopped
    container_name: JobHelloWorld
    command: ["node", "./src/job_starter.js"]

コンテナを起動します。

docker-compose up -d

コンテナに

コンテナに入ると

docker exec -it <containername> /bin/sh

以下は、コメントから要求されたコマンドの出力です。

/usr/src/app # echo $SHELL

/usr/src/app # ps -p $$
ps: unrecognized option: p
BusyBox v1.32.1 () multi-call binary.

Usage: ps [-o COL1,COL2=HEADER] [-T]

Show list of processes

    -o COL1,COL2=HEADER Select columns for display
    -T          Show threads
/usr/src/app #

ポリスチレン-EF

「ps -ef」の出力も興味深いです。

/usr/src/app # ps -ef
PID   USER     TIME  COMMAND
    1 root      0:00 sleep 360d
    8 root      0:00 sh
   16 root      0:00 ps -ef

shシェルが表示されます(正しいですか?)。ただし、/bin/sh 起動は機能しません。

補助grep$$

/usr/src/app # ps aux | grep $$
   19 root      0:00 /bin/sh
   26 root      0:00 grep 19

/bin/sh はリンクです

/usr/src/app # ls -la /bin/sh
lrwxrwxrwx    1 root     root            12 Apr 14 10:25 /bin/sh -> /bin/busybox

小さなテスト変更.profile

/usr/src/app # cat ~/.profile
alias l='ls $LS_OPTIONS -la'

export foo="bar"

/usr/src/app #
/usr/src/app # echo $foo

/usr/src/app #
/usr/src/app # . ~/.profile
Job-/usr/src/app# echo $foo
bar
Job-/usr/src/app#

ご覧のとおり、.profileは機能しますが、Docker環境でAlpine Linuxにログインしても実行されないか、Alpineがログインしても.profileは実行されません。

Alpine Linuxの対話型セッションのための起動スクリプトが何であるかを知っている人はいますか?

または:「docker exec」でログインしたときにDockerが.profileを実行しない理由を知っている人はいますか?

ベストアンサー1

時間をかけて助けてくれた@terdonに感謝します。

DockerコンテナからAlpine Linuxにログインするときは、次のコマンドを使用して.profileを実行する必要があります。

docker exec -it <containerName> /bin/sh -l

最後に -l を参照してください (ログインの場合は 'l'? :-) )。これにより Alpine シェルが起動します。ログインシェルこれは読み取りを意味/etc/profileするため、~/.profileこのファイルを使用してエイリアスを定義できます。

ただし、Ubuntuコンテナにはこれを必要としません。

おすすめ記事