rails を docker で動かす

dockerをインストール している前提とする docker compose で動かす docker compose は、複数コンテナを1単位として管理するツール。例えば、rails, postgres, redis をひとまとまりで管理するなど。 Dockerfile を作成 rails アプリのルートディレクトリに以下の Dockerfile を作成する docker イメージを作成するため定義ファイル ARG RUBY_VERSION=3.4.1 FROM ruby:${RUBY_VERSION} ARG APP_NAME=app_name ARG APP_PATH=/${APP_NAME} WORKDIR ${APP_PATH} COPY . . RUN bundle install EXPOSE 3000 CMD rails server -b 0.0.0.0 FROM ruby:${RUBY_VERSION} ベースのdockerイメージを指定する {イメージ名}:{タグ名} で指定 https://hub.docker.com/_/ruby に ruby のイメージ一覧がある WORKDIR ${APP_PATH} この後の作業ディレクトリの指定 RUN mkdir ${APP_PATH} && cd ${APP_PATH} としなくていい COPY . . COPY {ホストのディレクトリ} {コンテナのディレクトリ} として、ホストのファイルをコンテナにコピーする 今回は、両方ともカレントディレクトリ RUN bundle install RUN は、コンテナの中でコマンドを実行する EXPOSE 3000 公開ポートを指定する EXPOSE自体は何もしない。ドキュメンテーションのための記述。 このイメージを使う人が、 Dockerfile を見るだけでコンテナ側のポートの設定ができる なので無くてもいい CMD rails server -b 0....

January 20, 2025

debian に docker をインストールする

docker のインストール方法のメモ 公式ドキュメントに従って、 apt リポジトリを使ってインストールする https://docs.docker.com/engine/install/debian/#install-using-the-repository docker compose もインストールされる apt リポジトリの設定 # 必要なパッケージのインストール $ sudo apt-get update $ sudo apt-get install ca-certificates # gpg キーダウンロード $ sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc $ sudo chmod a+r /etc/apt/keyrings/docker.asc # リポジトリを追加 $ echo 'deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian bookworm stable' | sudo tee /etc/apt/sources.list.d/docker.list インストール $ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin インストールは完了だが、これだけだと sudo をつけないと実行できない sudo をつけずに docker コマンドを実行できるようにする 公式ドキュメントに従って、sudo をつけずに docker コマンドを実行できるようにする https://docs....

January 13, 2025

rbenv による ruby アップグレード

アップグレード手順 ruby の 3.4 がリリースされたので、アップグレードした。手順を記録しておく。 rbenvでインストール している前提とする。 rbenv, ruby-build の最新化 最新の ruby バージョンをインストール可能な状態にするため、リポジトリを最新化する。 # rbenv の最新化 $ git -C ~/.rbenv pull # ruby-build の最新化 $ git -C ~/.rbenv/plugins/ruby-build/ pull アップグレード インストール時と同じ手順で、最新バージョンをインストールすればよい。 # インストール可能な ruby バージョンを確認 $ rbenv install -l # インストール $ rbenv install 3.4.1 # バージョンの設定 $ rbenv global 3.4.1 # 古いバージョンのアンインストール $ rbenv uninstall 3.3.0

January 6, 2025

Rails のタイムゾーンについて

rails をタイムゾーンの設定をしないまま時刻をDBに保存したら UTC の時刻として解釈されてしまった。 irb(main):001:0> user = User.new(last_login_at: "2024/07/01 10:00") => #<User:0x00007fe26547b680 ... irb(main):002:0> user.last_login_at => Mon, 01 Jul 2024 10:00:00.000000000 UTC +00:00 タイムゾーンの設定や時刻の取り扱いについて整理する。 Time と ActiveSupport::TimeWithZone の違い Time クラス ruby の組み込みクラス タイムゾーンは OS または環境変数 TZ を参照する Time.now や Time.parse などのように使う。 irb(main):01:0> time = Time.now => 2024-06-30 20:24:14.077687386 +0900 irb(main):02:0> time.class => Time ActiveSupport::TimeWithZone active_support のクラス タイムゾーンは config.time_zone を参照する 設定しているもの以外のタイムゾーンも扱える Time.zone.now や Time.zone.parse などのように使う。 irb(main):01:0> time = Time.zone.now => Thu, 30 Jun 2024 11:25:14....

July 1, 2024

データベース(SQLite)をバックアップ・リストアする rake タスクの作成

手軽に開発環境でデータベースのバックアップとリストアしたいので、やり方を調べてrakeタスク化する SQLite3 のインストール sqlite のコンソールを起動しようとしたら、sqlite が入っていなかったのでインストールする $ rails db Couldn't find database client: sqlite3. Check your $PATH and try again. $ sudo apt install -y sqlite3 Reading package lists... Done Building dependency tree... Done Reading state information... Done Suggested packages: sqlite3-doc The following NEW packages will be installed: sqlite3 0 upgraded, 1 newly installed, 0 to remove and 13 not upgraded. Need to get 353 kB of archives. After this operation, 546 kB of additional disk space will be used....

June 24, 2024

rbenv による ruby のインストール手順

ruby のインストール方法はいくつかあるが、ここでは rbenv による方法について書く。 参考: https://www.ruby-lang.org/ja/documentation/installation/#rbenv rbenv は、ruby のバージョン管理ツール rbenv 自体には ruby をインストール機能はないが、ruby-build プラグインを使うことでインストールも可能となる。 インストール手順 rbenv のインストール https://github.com/rbenv/rbenv?tab=readme-ov-file#basic-git-checkout を参考に # リポジトリのクローン $ git clone --depth 1 https://github.com/rbenv/rbenv.git ~/.rbenv # rbenv の設定をシェルに追加 $ echo 'eval "$(~/.rbenv/bin/rbenv init - bash)"' >> ~/.bashrc # ~/.bashrc の再読込み $ source ~/.bashrc ruby-build のインストール https://github.com/rbenv/ruby-build?tab=readme-ov-file#clone-as-rbenv-plugin-using-git を参考に # リポジトリのクローン $ git clone --depth 1 https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build 必要なパッケージ群のインストール https://github.com/rbenv/ruby-build/wiki#ubuntudebianmint を参考に # パッケージインストール $ sudo apt-get install autoconf patch build-essential rustc libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libgmp-dev libncurses5-dev libffi-dev libgdbm6 libgdbm-dev libdb-dev uuid-dev インスール https://github....

June 17, 2024

Hugo の設定ファイル等を toml から yml に変更する

設定ファイル hugo の設定ファイルはデフォルトでは toml だが、json や yml にもできるようだ。 https://gohugo.io/getting-started/configuration/#configuration-file hugo.toml baseURL = https://foolib.net/ title = ふうのブログ theme = PaperMod hugo.json { "baseURL": "https://foolib.net/", "title": "ふうのブログ", "theme": "PaperMod" } hugo.yml baseURL: https://foolib.net/ title: ふうのブログ theme: PaperMod 個人的に yml が好きなので、hugo.yml に変更した。 記事テンプレート hugo new content xxx で記事ファイルを生成するときに参照されるテンプレートファイル(architupes/default.md)のメターデータ部分も toml から yml に変更しておく。 toml +++ title = '{{ replace .File.ContentBaseName "-" " " | title }}' date = {{ .Date }} draft = true +++ json { "title": "{{ replace ....

May 6, 2024

Hugo のサイトを作成して動かしてみる

前回 Hugo をインストールしたので、実際にサイトを作成して動かしてみる。 基本的には Hugo のクイックスタートを参考に進める。 Hugo プロジェクトの作成 Hugo プロジェクトを作成する。コマンドが成功すると丁寧に次のステップを書いてくれていて、だいたいクイックスタートと同じ流れが書いてある。 ~$ hugo new site blog Congratulations! Your new Hugo site was created in /home/foo/blog. Just a few more steps... 1. Change the current directory to /home/foo/blog. 2. Create or install a theme: - Create a new theme with the command "hugo new theme <THEMENAME>" - Install a theme from https://themes.gohugo.io/ 3. Edit hugo.toml, setting the "theme" property to the theme name....

April 29, 2024

Hugo をインストールする

技術ブログ的なものを始めるにあたって、記事はマークダウンで書いて git 管理したいなと思っていろいろ調べてたら、静的サイトジェネレータというツールがあることを知った。 軽く調べてみたところ、情報が多く気軽に始められそうだったので Hugo というツールにしてみた。 Hugo とは 静的なサイト・ブログを構築できるツールである静的サイトジェネレータのひとつ テンプレートを入れることで見た目もいい感じのサイトが作れる マークダウンによる執筆が可能 非常に軽量に動作する 標準版と拡張版の違い Hugo には標準版と拡張版があるが、拡張版が推奨されている。 https://gohugo.io/installation/linux/#editions インストール 公式サイトの Debian のところを見ると apt でインストールするかリリースページから Debian パッケージをダウンロードしてインストールできる。 https://gohugo.io/installation/linux/#debian 最新板をインストールしたいので、リリースページからDebian パッケージをインストールすることにした。 いくつか並んでいるが、hugo_extended_{version}_linux-amd64.deb を選ぶ 拡張版なので hugo_extended Debian パッケージなので deb uname -m が x86_64 なので amd64 ※最初間違えて arm64 の方をインストールしてしまって動かなかった $ wget https://github.com/gohugoio/hugo/releases/download/v0.125.1/hugo_extended_0.125.1_linux-amd64.deb # パッケージダウンロード $ sudo dpkg -i hugo_extended_0.125.1_linux-amd64.deb # インストール $ hugo version # 動作確認 hugo v0.125.1-68c5ad638c2072969e47262926b912e80fd71a77+extended linux/amd64 BuildDate=2024-04-18T08:21:19Z VendorInfo=gohugoio https://github.com/gohugoio/hugo/releases/tag/v0.125.1 参考 Hugo 公式サイト: https://gohugo.io/

April 22, 2024

VPS でサーバ構築後に最初にやったこと

趣味のプログラミングや勉強で使うために、VPS を契約した。 使い始めに設定したことなどを備忘録として残しておく。 環境 メモリ512MBでUbuntu22.04が選べなかったので、Debian12にしてみた。 # cat /etc/os-release PRETTY_NAME="Debian GNU/Linux 12 (bookworm)" NAME="Debian GNU/Linux" VERSION_ID="12" VERSION="12 (bookworm)" VERSION_CODENAME=bookworm ID=debian HOME_URL="https://www.debian.org/" SUPPORT_URL="https://www.debian.org/support" BUG_REPORT_URL="https://bugs.debian.org/" パッケージのアップグレード まずパッケージのアップグレードを実施した。 # apt update # apt -y upgrade アップグレード時に、sshd_config を上書きするか聞かれたが、サーバ構築直後のため install the package maintainer's version を選択しておく。 Package configuration │ A new version (/tmp/tmp.YABMpE73l1) of configuration file /etc/ssh/sshd_config is available, but the version installed currently has │ │ been locally modified. │ │ │ │ What do you want to do about modified configuration file sshd_config?...

April 15, 2024