at backyard

Color my life with the chaos of trouble.

Oracle Cloud InfrastructureでDockerをインストールしてWebアプリを動かす備忘録

Oracle Cloud InfrastructureのVMインスタンス上でDockerで構築したアプリを動かすまでのメモ。
なお、別に Oracle Container Cloud Service というのあるらしく、そちらでコンテナを用いたアプリ管理はできるようだが、今回はVMインスタンス上で試してみる。

Oracle Container Cloud Serviceのドキュメント

docs.oracle.com

動かすインスタンスタイプは VM.Standard.E2.1.Micro で、これは無料枠で動かせるやつとなる。

インストールにあたって下記のドキュメントを参照している。
なお、適宜不要そうな箇所は飛ばしているのでその点ご了承いただきたい。

docs.docker.com

また一部下記のドキュメントも参照しているが、基本的にこちらの記述は古く、コマンドもそのままでは動かないため、あまり参考にしないほうが良い。
(ただし内容的にはGhostをOCI上で動かしてブログを構築するというもので、とても勉強になりそうな内容となっている)

https://blogs.oracle.com/otnjp/post/en_article_10

Oracle Cloud InfrastructureのVMインスタンス上でDockerをセットアップした際のコマンドログ

ちなみに今は yum ではなく dnf を使うらしい。私は yum を使った記憶しかなかったが,dnfyumの後継、という立ち位置らしい。

atmarkit.itmedia.co.jp

では、コマンドをメモしていく。

# 一応まずはアップデートかけておく
sudo dnf update -y

# repoを確認(dockerは存在しないことを確認)
dnf repolist

# dockerのrepoを追加
sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

# repoを確認(docker-ce-stableが追加されていることを確認)
dnf repolist

# dockerをインストール
sudo dnf install docker-ce docker-ce-cli containerd.io

# dockerを起動・有効化
sudo systemctl start docker
sudo systemctl enable docker

### root以外のユーザーがDockerコマンドを実行できるようにしておく
# 下記のコマンドは既にgroupがあると出てきたので不要?
groupadd docker
sudo service docker restart
sudo usermod -a -G docker opc

exit

opcユーザーがsudoを使わずにDockerコマンドを実行できるようにするには、ログアウトしてからログインし直す必要があるため、一度 exit してもう一度入り直す。
(もしかしたら不要かもしれないが、Oracleのドキュメントに書いてあったので一応そのとおりに行っている。)

早速テストしてみる。

昔Goの入門のために作った簡単なwikiアプリをDockerで動かしてみることにした。

github.com

前提条件として以下の設定を行っている。

  • gitは既にインストール済み
  • 別のアプリを OCI 上で試すために既に3000ポートを開けるように設定しているので、今回Docker上で起動するアプリも3000ポートでアクセスを受け付けるようにする
# リポジトリをclone
git clone https://github.com/shinshin86/gowiki.git

cd gowiki/
docker build -t gowiki .

# アプリ自体は8080ポートで受け付けているため、3000 -> 8080とするようにして起動
docker run -p 3000:8080 -it --rm --name running-gowiki gowiki

これでVMインスタンスのPublic IP:3000/view/test にアクセスすると、wikiアプリにアクセスできる。

f:id:shinshin86:20220305160724p:plain
Webアプリにアクセスした際のスクショ

たぶん作ったのは正月とかだったのだろうか...?

備忘録は以上となる。