質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.98%

Alpine Linuxにおけるapk updateの役割と必要性について知りたいです

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 286

ruuusaamarki

score 435

前提

alpine Linuxベースのdockerfileを書いている際
npm installがうまくいかなかった。
これを受けてapk updateコマンドの詳細情報を検索してみたが見つけられなかった。

環境

docker-machine上にて環境を構築しています。

起こった問題のソース

RUN apk add --update nodejs npm; \
    npm install -g browserify; \
    npm install -g babel-cli; \
    apk add git;


↑こちらのソースではDokcerコンテナが立ち上がらなかった。
以下のように修正したらコンテナが立ち上がってきた。

RUN apk add --update nodejs npm; \
    apk update; \
    npm install -g browserify; \
    apk update; \
    npm install -g babel-cli; \
    apk update; \
    apk add git;

疑問点

alpine linux における apk update コマンドがやっていることを詳しく知りたいです。
また今回のようにapk updateを書く必要があるのはDockerの仕様によるものなのか
AlpineLinuxの仕様によるものなのかもわかりましたらお願いいたします。

質問内容

もっとスマートに書きたいのですが
有効情報にたどり着けていない状況です。
ヒントだけでもいただけましたら嬉しく思います。
よろしくお願いいたします。

テスト2回目結果

FROM nginx:mainline-alpine
RUN apk update; \
    apk add nodejs npm; \
    npm install -g browserify; \
    npm install -g babel-cli; \
    apk add git;
WORKDIR /app
EXPOSE 8080
CMD nginx -g "daemon off;"
version: '3.7'
services:
  webserver:
    build: ./
    container_name: nginx
    tty: true
    volumes:
      - ./app:/app
    ports:
      - "8080:80"
$ docker-compose build --no-cache
Building webserver
Step 1/5 : FROM nginx:mainline-alpine
mainline-alpine: Pulling from library/nginx
9d48c3bd43c5: Pull complete
b6dac14ba0a9: Pull complete
Status: Downloaded newer image for nginx:mainline-alpine
Step 2/5 : RUN apk update;     apk add nodejs npm;     npm install -g browserify;     npm install -g babel-cli;     apk add git;
fetch http://dl-cdn.alpinelinux.org/alpine/v3.10/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.10/community/x86_64/APKINDEX.tar.gz
v3.10.2-19 [http://dl-cdn.alpinelinux.org/alpine/v3.10/main]
v3.10.2-2 [http://dl-cdn.alpinelinux.org/alpine/v3.10/community]
OK: 10339 distinct packages available
(1/8) Installing ca-certificates (20190108-r0)
(2/8) Installing c-ares (1.15.0-r0)
(3/8) Installing libgcc (8.3.0-r0)
(4/8) Installing http-parser (2.9.2-r0)
(5/8) Installing libstdc++ (8.3.0-r0)
(6/8) Installing libuv (1.29.1-r0)
(7/8) Installing nodejs (10.16.3-r0)
(8/8) Installing npm (10.16.3-r0)
Executing busybox-1.30.1-r2.trigger
Executing ca-certificates-20190108-r0.trigger
OK: 82 MiB in 45 packages
npm ERR! code ENOTFOUND
npm ERR! errno ENOTFOUND
npm ERR! network request to https://registry.npmjs.org/cached-path-relative failed, reason: getaddrinfo ENOTFOUND registry.npmjs.org registry.npmjs.org:443
npm ERR! network This is a problem related to network connectivity.
npm ERR! network In most cases you are behind a proxy or have bad network settings.
npm ERR! network
npm ERR! network If you are behind a proxy, please make sure that the
npm ERR! network 'proxy' config is set properly.  See: 'npm help config'

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2019-08-28T12_45_46_775Z-debug.log
npm ERR! code ENOTFOUND
npm ERR! errno ENOTFOUND
npm ERR! network request to https://registry.npmjs.org/fs-readdir-recursive failed, reason: getaddrinfo ENOTFOUND registry.npmjs.org registry.npmjs.org:443
npm ERR! network This is a problem related to network connectivity.
npm ERR! network In most cases you are behind a proxy or have bad network settings.
npm ERR! network
npm ERR! network If you are behind a proxy, please make sure that the
npm ERR! network 'proxy' config is set properly.  See: 'npm help config'

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2019-08-28debug.log
(1/5) Installing nghttp2-libs (1.39.2-r0)
(2/5) Installing libcurl (7.65.1-r0)
(3/5) Installing expat (2.2.7-r0)
(4/5) Installing pcre2 (10.33-r0)
(5/5) Installing git (2.22.0-r0)
Executing busybox-1.30.1-r2.trigger
OK: 96 MiB in 50 packages
Removing intermediate container 
 ---> 
Step 3/5 : WORKDIR /app/reactbeginnersguide
 ---> Running in 
Removing intermediate container 0
 ---> 
Step 4/5 : EXPOSE 8080
 ---> Running in 
Removing intermediate container 
 ---> 
Step 5/5 : CMD nginx -g "daemon off;"
 ---> Running in 
Removing intermediate container 
 ---> 

Successfully built 
Successfully tagged react_webserver:latest
$docker-compose up -d --build
Creating network "react_default" with the default driver
Building webserver
Step 1/5 : FROM nginx:mainline-alpine
 ---> 
Step 2/5 : RUN apk update;     apk add nodejs npm;     npm install -g browserify;     npm install -g babel-cli;     apk add git;
 ---> Using cache
 ---> 
Step 3/5 : WORKDIR /app/react
 ---> Using cache
 ---> 
Step 4/5 : EXPOSE 8080
 ---> Using cache
 ---> 
Step 5/5 : CMD nginx -g "daemon off;"
 ---> Using cache
 ---> 

Successfully built 
Successfully tagged react_webserver:latest
Creating nginx ... done
$docker exec -it nginx /bin/sh
/app # browserify --version
/bin/sh: browserify: not found
/app # babel --version
/bin/sh: babel: not found
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

npm installがうまくいかなかった
Dokcerコンテナが立ち上がらなかった。

なんらかのメッセージが出ていると思いますので、質問の際にそれを転載いただいたほうが事象把握しやすいので、お願いします

apk updateは「Alpineのパッケージリポジトリから最新のインデックスを取得」らしいので1回実行すれば大丈夫そうです。

下記ではいかがでしょう。

RUN apk update; \
    apk add nodejs npm; \
    npm install -g browserify; \
    npm install -g babel-cli; \
    apk add git;

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/08/28 22:29

    ご回答ありがとうございます。

    また情報が不足しておりまして申し訳ありませんでした。
    環境とテスト2を追記させていただきました。
    ご提示いただいた内容の結果がテスト2となっており
    npmでエラーが出て、babelなどがインストールされない状態でした。
    コンテナは立ち上がりexecできました。

    改めて整理してみてエラーにnetworkという記載が並んでおり、docker-machine上で
    実行しているのが関連しているのか気になっております。

    何かお心当たりがございましたらコメントいただければ嬉しいです。

    キャンセル

  • 2019/08/29 11:35

    申し訳ありません、原因が特定できていないのですが
    何度か試していたら無事起動できました。
    apk updateの意味がはっきりして助かりました。
    ありがとうございます!

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.98%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る