これは、2019年 code-server に Advent Calender の 第9日目の記事です。今回も、code-server って何だろう?と言う事を解説していきます。
(1) code-server って何?
(2) Dockerで独自のcode-server 環境を作って見る
(3) VSCode の Plugin を 利用してみる
(4) DBなども含めたMVC環境を用意してみよう (1)
(5) DBなども含めたMVC環境を用意してみよう (2)
(6) DBなども含めたMVC環境を用意してみよう (3)
(7) DBなども含めたMVC環境を用意してみよう (4)
(8) DBなども含めたMVC環境を用意してみよう (5)
(9) DBなども含めたMVC環境を用意してみよう (6)
(10) おまけ
(NEXT->) オンライン環境篇 1日目 作業環境を整備する
(..) ローカルで、DBなどの環境も含めて構築するには
(..) オンライン上に置くには?
(..) K8Sなどの最近の流行りの環境と連携するには?
(..) Code-Serverを改造して、より良くしたい
ローカル環境篇 を通して、DB と アプリ と VSCode を含む開発環境を、Docker-Composeで固めて提供できるようになりました。
WebFrameWork を用いた開発環境などは、組めるようになったのではないでしょうか。
オンライン篇と魔改造篇に進むわけですが、Docker について、補足していきたいと思います。
今回の何?
Image として 固めて再利用できる
開発環境を固めたい!!
Dockerfile を書いたとはいえ、次に必ず Docker Image の Build が成功するとは限りません。
一度、ビルドに成功したイメージは、使いまわしましょう。
Python の開発環境があるとします。
FROM python:3.8.0-buster
RUN apt-get update
# code-server を取得するのに wget を install しておく
RUN apt-get install -y wget
# 作業ディレクトリを /works にする。どこでも良いです
WORKDIR /works
# code-server のバイナリーを取得
RUN wget https://github.com/cdr/code-server/releases/download/2.1692-vsc1.39.2/code-server2.1692-vsc1.39.2-linux-x86_64.tar.gz
# code-server を /works 配下に解凍する
RUN tar -xzf code-server2.1692-vsc1.39.2-linux-x86_64.tar.gz -C ./ --strip-components 1
WORKDIR /works/app
ENV PYTHONPATH=/works/app
# python の plugin をインストール
RUN /works/code-server --install-extension ms-python.python
RUN /usr/local/bin/python -m pip install -U pylint --user
# デフォルトは、/works/app で起動するようにする。
CMD [ "/works/code-server", "--allow-http", "--auth", "none", "--port", "8443", "/works/app"]
$ docker build -t for_python .
としてビルドしてあげれば、以降は、$ docker run -it for_python bash
といった感じで使えます。
この、Image を、他の人と共有するには、Docker Hub が便利です。
https://hub.docker.com/
会員登録後、作成したImage を公開することができます。公開してみましょう。
リポジトリーに配置しよう
まずは、Loginします。
$ docker login -u kyorohiro
Password:
Login Succeeded
ビルドして、Pushしてみましょう
# rename
$ docker tag for_python kyorohiro/for_python:latest
# push
$ docker push kyorohiro/for_python:latest
$ docker push kyorohiro/for_python:latest
The push refers to repository [docker.io/kyorohiro/for_python]
64a79ea89615: Pushing [============> ] 9.104MB/11.06MB
72d671b5ce06: Pushing [=> ] 6.086MB/195MB
36788bc3e719: Pushed
1ca79cb1c3f8: Pushing [==> ] 8.901MB/182.6MB
9a5303639ce9: Pushing [==> ] 2.46MB/47.3MB
14f67da8f102: Pushing 1.536kB
4f67a1129031: Waiting
a4371f75e248: Waiting
00947a3aa859: Waiting
7290ddeeb6e8: Waiting
d3bfe2faf397: Waiting
cecea5b3282e: Waiting
以降は、docker pull kyorohiro/for_python
として Build 済みの Image を取得できるようになります。
Dockerfileに書かれていない内容も、Image化できる。
独自の Docker Image を Dockerfile を Build するだけではありません。
実際に手作業で行った作業の結果も Docker Image 化 できます。
試してみましょう
$ docker run -it ubuntu bash
# 以降は Docker の中
$ curl www.google.com
bash: curl: command not found
$ apt-get update
$ apt-get install -y curl
$ curl www.google.com
<!doctype html><html itemscope="" ...
lang="ja"><head>...
$ exit
では、この終了したContainerを再起動してみましょう
# container 一覧を取得
$ docker ps -a | grep ubuntu
8269ec081004 ubuntu "bash" 4 minutes ago Exited (0) 46 seconds ago agitated_goldberg
# 再開
$ docker start 8269ec081004
# Bashを起動
$ docker exec -it 8269ec081004 bash
# Curl も動きます
$ curl www.google.com
次は、Image化してみましょう
# 起動しているか確認
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8269ec081004 ubuntu "bash" 7 minutes ago Up 3 seconds agitated_goldberg
# 起動しているなら停止
$ docker stop 8269ec081004
# Image化する
$ docker commit 8269ec081004 manual_test
sha256:ec4c80afae824f4b3bf5c6b4997e30cdebb7264d80f0144dff9af07e38bbe73b
# 確認
$ docker image ls manual_test
REPOSITORY TAG IMAGE ID CREATED SIZE
manual_test latest ec4c80afae82 49 seconds ago 106MB
おっ、Image 化できましたね!! これで、再度ビルドする事なくアレコレできますね..
次回
オンライン篇に入ります。