🐙

[Ubuntu22.04][docker]Dockerfileの作り方。DockerfileでVSCodeをインストールする。

2023/11/24に公開

この度、勉強会をすることになって、開発環境を一斉に構築する必要にせまられ、Dockerで楽できんかな~って考えた。

Abstract

Dockerfile を書くためのベストプラクティス解説編に素晴らしくわかりやすく、書いている記事があるのだけど、結局何から作ればいいんだろって最初の一歩が分かんなくって。
そこから、書いてみた。

前提

  • Ubuntu上のdocker操作手順を記述してるので、Windowsな人は適宜読み替えて下さいね。
  • 開発環境をバラまくのが目的です。

Dockerfileの使い方

$ cd "Dockerfileのある場所"
$ docker build –t <IMAGE名:TAG名> .

もう、これ一択。"-f"とか知らん。
これで、Dockerfileを自動で読みに行ってくれる。

Dockerfileの作り方

  1. 最初の開発環境(linux)は、docker関係なくaptコマンド等で構築する。
  2. その手順をDockerfileに落とし込む。
  3. で、docker build .を実行してイメージを生成。
    という流れになる。

作ってみる

構築するDockerfileはこれ。VSCode+Go+Webアプリの開発環境を構築する。

1.作業フォルダを作成 -> 移動

Dockerfile
$ mkdir wkaaa && cd wkaaa

この記事のP28より
余計なファイルを置かないように、最初から、作業フォルダを作成して、そこで作業する。

2.Dockerfile生成

Dockerfile
$ vi Dockerfile

3.FROM句 追記

さっそく一行目。

Dockerfile
FROM akarita/docker-ubuntu-desktop 

VSCodeをインストールする以上、どうしてもGUIにしたかったので、ググってakaritaさんのこの記事を見つけた。
ありがたく使わせてもらいます。あざっす。

4.試しに動作確認

vi を保存し抜けて、docker起動するかやってみる。

Docker起動
$ docker build -t aaa:000 .
$ docker run --name bbb111 -it --platform=linux/amd64 -p 6080:6080 aaaa:000

ubuntuのブラウザを起動して、アドレスに"http://localhost:6080/vnc.html"を入力 -> Connect押下。


出来た!!
ひとまず、期待通り、GUI画面が表示された。

終了の方法は、ブラウザ閉じて、dockerコンテナも終了させる。

Docker後片付け
ctrl + c
$ docker ps -a
CONTAINER ID   IMAGE      COMMAND                   CREATED          STATUS                        PORTS     NAMES
3e2e59f5fd43   aaaa:000   "/bin/sh -c 'bash -c…"   11 minutes ago   Exited (130) 14 seconds ago             bbbb000

$ docker rm bbbb000 
bbbb000

$ docker rmi aaaa:000 

後片付け終了。

さ、つづき、つづき。

6.必要なライブラリ(git wget gpg hppts)のインストール

Dockerfile
FROM akarita/docker-ubuntu-desktop 

RUN apt update && apt -y upgrade && apt -y install wget gpg git apt-transport-https --no-install-recommends

この記事のP39より
同じRUN命令行で、"apt update" と "apt install"を実行する。パッケージ情報に変更があれば、必ずapt updateも走るため、意図せず古いのを防止する目的。

Dockerfileつづき
# 署名鍵の登録
$ wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > packages.microsoft.gpg
# packages.microsoft.gpgの所有権とパーミッションを変更
$ sudo install -D -o root -g root -m 644 packages.microsoft.gpg /etc/apt/keyrings/packages.microsoft.gpg
# コピー元のファイル削除
$ rm -f packages.microsoft.gpg
# リポジトリの登録
$ sudo sh -c 'echo "deb [arch=amd64,arm64,armhf signed-by=/etc/apt/keyrings/packages.microsoft.gpg] https://packages.microsoft.com/repos/code stable main" > /etc/apt/sources.list.d/vscode.list'

$ cat /etc/apt/sources.list.d/vscode.list
deb [arch=amd64,arm64,armhf signed-by=/etc/apt/keyrings/packages.microsoft.gpg] https://packages.microsoft.com/repos/code stable main

7.vscodeインストール

Dockerfile
RUN apt update && apt -y upgrade && apt -y install code --no-install-recommends

8.起動シェルをデスクトップに置く

Dockerfile
RUN mkdir -p /root/Desktop/wkprd
RUN echo "code --user-data-dir='/root/Desktop/wkprd' --no-sandbox" > /root/Desktop/VSCode.sh
RUN chmod 755 /root/Desktop/VSCode.sh

出来た。これで動かしてみる。

Docker起動
$ docker build -t aaa:000 .
$ docker run --name bbb111 -it --platform=linux/amd64 -p 6080:6080 aaaa:000

動いた!!

赤丸をダブルクリックして、VSCodeも動いた!!

Discussion