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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

Debian

Debianは、Debian GNU/Linux などのOS(オペレーティングシステム)です。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

0回答

786閲覧

docker image(buildpack-deps:jessie)のバージョンアップ方法

otdsh9432

総合スコア55

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

Debian

Debianは、Debian GNU/Linux などのOS(オペレーティングシステム)です。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

0クリップ

投稿2023/04/22 05:22

編集2023/04/22 09:01

実現したいこと

現在、Ruby on Railsサーバのdocker imageとして buildpack-deps:jessie を使っていますが、
古くて、apt-get updateなどができなくなっているため、OSのバージョンアップを行いたいです。
また、そのための適切な方法や注意点などを知りたいです。

  • OSのバージョンアップ方法
    • jessie から Buster へのアップデートを一旦は想定していますが、特に明確な根拠はないため不確定)
  • 何か注意点や、調べるべき事柄

前提

  • 開発環境にてDockerを使っています。今回の質問対象のdockerfileはRailsサーバのコンテナとして使っているものです。
  • 一旦はrubyのバージョンアップは考えていません。(今後検討していきたいとは思っていますが、影響範囲が大きいためすぐには難しい状態です)
    • (rubyのバージョンアップを先にした方が良い、などもあるかもしれません)

考えていること

  • 恐らく、とりあえず jessie から buster に書き換えてみて、出てくるエラーに1個1個対処していくのが正攻法なのかなと思いつつ、もし行う前に考えるべきことがあればお伺いしたいと考えた次第です。
  • 以下のイメージもあるので、これをまずは入れて試してみるのが良いのかなとは考えています。
  • ですが、周囲に頼れる人も少ないため、何かもしわかることがあれば、お伺いできればと思っています。

発生している問題・エラーメッセージ

恐らくOSのバージョンが古いことが原因と思いますが、
docker build時のapt-get update時に以下のエラーが出る状態です。

W: GPG error: http://archive.debian.org jessie Release: The following signatures were invalid: KEYEXPIRED 1587841717 W: Failed to fetch http://security.debian.org/dists/jessie/updates/main/source/Sources 404 Not Found [IP: ****] W: Failed to fetch http://security.debian.org/dists/jessie/updates/main/binary-amd64/Packages 404 Not Found [IP: ****] E: Some index files failed to download. They have been ignored, or old ones used instead.

該当のソースコード

FROM --platform=linux/x86_64 buildpack-deps:jessie # m1 macでも動くよう--platformを指定 # skip installing gem documentation RUN set -eux; \ mkdir -p /usr/local/etc; \ { \ echo 'install: --no-document'; \ echo 'update: --no-document'; \ } >> /usr/local/etc/gemrc ENV LANG C.UTF-8 ENV RUBY_MAJOR 2.6 ENV RUBY_VERSION 2.6.6 ENV RUBY_DOWNLOAD_SHA256 5db187************************* # some of ruby's build scripts are written in ruby # we purge system ruby later to make sure our final image uses what we just built RUN set -eux; \ \ savedAptMark="$(apt-mark showmanual)"; \ apt-get update; \ apt-get install -y --no-install-recommends \ bison \ dpkg-dev \ libgdbm-dev \ ruby \ ; \ rm -rf /var/lib/apt/lists/*; \ \ wget -O ruby.tar.xz "https://cache.ruby-lang.org/pub/ruby/${RUBY_MAJOR%-rc}/ruby-$RUBY_VERSION.tar.xz"; \ echo "$RUBY_DOWNLOAD_SHA256 *ruby.tar.xz" | sha256sum --check --strict; \ \ mkdir -p /usr/src/ruby; \ tar -xJf ruby.tar.xz -C /usr/src/ruby --strip-components=1; \ rm ruby.tar.xz; \ \ cd /usr/src/ruby; \ \ # hack in "ENABLE_PATH_CHECK" disabling to suppress: # warning: Insecure world writable dir { \ echo '#define ENABLE_PATH_CHECK 0'; \ echo; \ cat file.c; \ } > file.c.new; \ mv file.c.new file.c; \ \ autoconf; \ gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"; \ ./configure \ --build="$gnuArch" \ --disable-install-doc \ --enable-shared \ ; \ make -j "$(nproc)"; \ make install; \ \ apt-mark auto '.*' > /dev/null; \ apt-mark manual $savedAptMark > /dev/null; \ find /usr/local -type f -executable -not \( -name '*tkinter*' \) -exec ldd '{}' ';' \ | awk '/=>/ { print $(NF-1) }' \ | sort -u \ | xargs -r dpkg-query --search \ | cut -d: -f1 \ | sort -u \ | xargs -r apt-mark manual \ ; \ apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \ \ cd /; \ rm -r /usr/src/ruby; \ # verify we have no "ruby" packages installed ! dpkg -l | grep -i ruby; \ [ "$(command -v ruby)" = '/usr/local/bin/ruby' ]; \ # rough smoke test ruby --version; \ gem --version; \ bundle --version # don't create ".bundle" in all our apps ENV GEM_HOME /usr/local/bundle ENV BUNDLE_SILENCE_ROOT_WARNING=1 \ BUNDLE_APP_CONFIG="$GEM_HOME" ENV PATH $GEM_HOME/bin:$PATH # adjust permissions of a few directories for running "gem install" as an arbitrary user RUN mkdir -p "$GEM_HOME" && chmod 777 "$GEM_HOME" CMD [ "irb" ] ENV DOCKER_DEV true ENV BUNDLE_JOBS=4 ENV BUNDLE_PATH=/bundle ENV BUNDLE_WITHOUT=production ENV DEBIAN_FRONTEND noninteractive RUN printf "deb http://archive.debian.org/debian/ jessie main\ndeb-src http://archive.debian.org/debian/ jessie main\ndeb http://security.debian.org jessie/updates main\ndeb-src http://security.debian.org jessie/updates main" > /etc/apt/sources.list RUN apt-get update -qq && apt-get install -y --force-yes build-essential libpq-dev libpng-dev nodejs jpegoptim pngquant npm vim wget sudo fonts-ipafont-gothic fonts-ipafont-mincho mysql-server zip && \ npm install -g n && \ n stable && \ npm install -g yarn && \ ln -s /usr/bin/nodejs /usr/bin/node && \ wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add - && \ sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' && \ apt-get update # macab RUN apt-get install -y --force-yes mecab mecab-ipadic-utf8 libc6-dev build-essential libmecab-dev libxft-dev # penthouse RUN apt-get install -y --force-yes libxss1 lsb-release libappindicator3-1 # 日本語化 RUN apt-get install -y --force-yes locales RUN locale-gen ja_JP.UTF-8 RUN localedef -f UTF-8 -i ja_JP ja_JP ENV LANG ja_JP.UTF-8 ENV LANGUAGE ja_JP:jp ENV LC_ALL ja_JP.UTF-8 RUN mkdir /myapp \ && mkdir -p /myapp/tmp/pids \ && mkdir -p /myapp/tmp/sockets \ && mkdir -p /myapp/tmp/capybara WORKDIR /myapp # bundle install # os毎にbundleのvolumeを分けるため、先にinstall ADD Gemfile /myapp/Gemfile ADD Gemfile.lock /myapp/Gemfile.lock ADD . /myapp

補足情報(FW/ツールのバージョンなど)

ruby 2.6.6

お手数をお掛けしますが、
もし何か少しでもわかることや、調査すべき項目・方法などでもありがたいです。
また、何か不足情報等ありましたらご教示いただけますと幸いです。

どうぞよろしくお願いいたします。

気になる質問をクリップする

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dameo

2023/04/22 07:55

数万人が利用しているSaaSサービスなら、まずはまともな担当者を雇うことをオススメします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問