新しい言語について学ぶ前ににわかDocker知識をマシにする(中編)
元々Go言語について学びたかったため、Go言語が動く環境を作成する。
最も簡単で単純な環境を構築する方法は、Go言語イメージ公式ページに記載されているコマンドを実行することだ。
docker pull golang
https://hub.docker.com/_/golang?tab=description
PowerShellで上記コマンドを実行すると、下記のような表示になる。
これでGo言語環境のイメージを保存できたはずなので、コマンドで確認する
docker images
すると上記表示になる。
Go言語環境のイメージが保存できていることが確認できた。
次に、下記コマンドでコンテナを作成する。
docker run -it {IMAGE ID}
IMAGE IDの部分には先ほど保存したイメージのIMAGE IDを使用する。
すると、上記表示になる。
これはコンテナが作成され、コンテナ内に入っている状態であることを示している。
実際に、Goのコマンドを打って確かめてみる。
言語のバージョンが表示され、Go言語が動くことを確認できた。
runコマンドのオプションについては公式ドキュメントを参照。
https://docs.docker.jp/v19.03/engine/reference/commandline/run.html
これだけでは応用もできないため、Dockerfileの作成を行う。
Go言語イメージ公式ページの下部に
クイックリファレンス(続き)
という項があり、さらにその中に
アプリでGoインスタンスを開始します
という項目がある。
そこにDockerfileの例が載っているため、そちらを使用する。
# Go言語公式イメージの「1.18」タグが付いているものを使用※
FROM golang:1.18
# この行以降で実行するコマンドはWORKDIRに指定したパスで実行する WORKDIR /usr/src/app # pre-copy/cache go.mod for pre-downloading dependencies and only redownloading them in subsequent builds if they change COPY go.mod go.sum ./ RUN go mod download && go mod verify COPY . .
# Goのソースをビルド RUN go build -v -o /usr/local/bin/app ./...
# docker run時に実行 CMD ["app"]
※タグはイメージにつけられるもので、上記では言語のバージョンを表す。
他にもディストリビューションごとに作成されていたりする。
イメージのOS等も載っているので確認できる
Dockerfileに記載できる他のコマンドについては下記参照
Dockerfile リファレンス — Docker-docs-ja 20.10 ドキュメント
Dockerfileには拡張子は必要なく、エディタで拡張子なしのファイルを作成する。
その後は、Dockerfileを置いたディレクトリに移動し下記コマンドを実行するとビルドが行われる
docker build .
上記では失敗しているがこのような表示になる
Dockerfile内で既にプロジェクトを作成している想定なので失敗している
WORKDIRを設定したところまでDockerfile内の記述を削除し再度実行すると、今度は成功した
docker imagesコマンドで確認すると、作成できていることがわかる
先ほどと同じようにdocker runコマンドを実行しバージョン確認を行う
上手くいっていることがわかる
次回はdocker-composeを使用しローカルのファイルをDockerコンテナ内で実行する、よく見る環境を作成予定。