docker-composeが非推奨になってEOLになってるの忘れてた。
代わりにdocker compose
使えってか。
時間かかるかなぁって構えてたけど、あっさり終わった。
さらば、docker-compose。
もうバージョン上げることもない。
何が変わったんやろ
GAっていう言い方で解説されてる方がいた。
作者さんありがとう。
そういえば、今年の春頃、何気にaptしてたらdockerのバージョンが20から23に上がってたことあったな。
なんでか知らんけどコンテナの名前が勝手に変わってた。
作者さんのサイトによると、
- コマンドラインが、V1は
docker-compose
で次のV2はdocker compose
- コンテナ名の命名規則が Compose V1 の「_」(アンスコ)から、Compose V2 は「-」(ハイフン)に変わる
- V1のdocker-compose.ymlファイルは、V2用にcompose.ymlに変更する必要あるけど、今はdocker-compose.ymlでも受け付ける
英文やけど、違いの解説もあった。
--scale
とか--compatibility
の差があるでって書いてあるけど、使ってへんし関係なさそうやな。
自分の場合は運用シェル作って使ってるから、シェル本来の機能が使えるようにするだけでええ。
変更対処
春頃にコンテナの名前が変わったなって気づいたとき、dockerにcomposeの機能がくっついたのは知らんかった。
バージョン番号が23やったかと思ったら今は24みたい。
nari@nafslinux-ubu22:/docker$ docker version
Client: Docker Engine - Community
Version: 24.0.5
API version: 1.43
Go version: go1.20.6
Git commit: ced0996
Built: Fri Jul 21 20:35:18 2023
OS/Arch: linux/amd64
Context: default
Server: Docker Engine - Community
Engine:
Version: 24.0.5
API version: 1.43 (minimum version 1.12)
Go version: go1.20.6
Git commit: a61e2b4
Built: Fri Jul 21 20:35:18 2023
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.22
GitCommit: 8165feabfdfe38c65b599c4993d227328c231fca
runc:
Version: 1.1.8
GitCommit: v1.1.8-0-g82f18fe
docker-init:
Version: 0.19.0
GitCommit: de40ad0
nari@nafslinux-ubu22:/docker$
docker compose
にもバージョンがある。
nari@nafslinux-ubu22:/docker$ docker compose version
Docker Compose version v2.20.2
nari@nafslinux-ubu22:/docker$
自分の環境はコンテナの名前依存してないから、アンスコがハイフンになってもあんまり苦しいわけやない。
対処考えたらこんな感じ。
- docker-compose.ymlの定義に沿って、いったんコンテナ全停止
- docker-compose.ymlをcompose.ymlに書き換え
- compose.ymlを使うように運用スクリプトを更新
ほないってみよか。
docker-compose.ymlの定義に沿って、いったんコンテナ全停止
普通に停止。
nari@nafslinux-ubu22:/docker$ sh ./dockerStop.sh
[+] Stopping 5/5 ✔ Container docker-sv_https-portal-1 Stopped 3.8s
✔ Container docker-cl_ubu22gvis-1 Stopped 0.4s
✔ Container docker-sv_jupyter-1 Stopped 0.5s
✔ Container docker-sv_django-1 Stopped 10.2s
✔ Container docker-sv_mariadb1011-1 Stopped 0.6s
[+] Stopping 5/0
✔ Container docker-cl_ubu22gvis-1 Stopped 0.0s
✔ Container docker-sv_https-portal-1 Stopped 0.0s
✔ Container docker-sv_mariadb1011-1 Stopped 0.0s
✔ Container docker-sv_jupyter-1 Stopped 0.0s
✔ Container docker-sv_django-1 Stopped 0.0s
nari@nafslinux-ubu22:/docker$
スクリプトは省略するけど、停止してるだけ。
/usr/bin/docker-compose stop
使い始めの頃、stopって書かなアカンのを、upに対するdownって書いてしもてコンテナ全部吹っ飛んだことあったなぁ。
docker-compose.ymlをcompose.ymlに書き換え
docker-compose.ymlの1行目には例えば「version: ‘3’」とか書いてて、書き方そのもののバージョン指定があった。
なんとcompose.ymlはそのバージョン指定だけを外した内容でいけた(そのうち何かに気づいて慌てて修正するかもしれんけど)。
LDAPとか扱わんようになったから、あんまり使わんコンテナも削除して整理したcompose.ymlのがコレ。
services:
sv_jupyter:
hostname: svjupyter
build:
context: ./nariDockerDat/sv_jupyter/py3
dockerfile: sv_jupyter_Dockerfile
entrypoint: >
jupyter-lab
--allow-root
--ip=0.0.0.0
--port=8888
--no-browser
--NotebookApp.token=''
--notebook-dir=/workspace
ports:
- "21088:8888"
volumes:
- ./nariDockerDat/sv_jupyter/py3/root_jupyter:/root/.jupyter
- ./nariDockerDat/sv_jupyter/workspace:/workspace
sv_mariadb1011:
hostname: svmariadb1011
build:
context: ./nariDockerDat/sv_mariadb11/
dockerfile: sv_mariadb11_Dockerfile
image: mariadb:1011
ports:
- "13306:3306"
env_file:
- ./nariDockerDat/sv_mariadb11/env_sv_mariadb11.txt
volumes:
- ./nariDockerDat/sv_mariadb11/data:/var/lib/mysql
- ./nariDockerDat/sv_mariadb11conf:/etc/mysql/conf.d
sv_https-portal:
image: steveltn/https-portal:1
ports:
- "30080:80"
- "30443:443"
environment:
DOMAINS: 'nafslinux.intra.gavann-it.com -> http://svdjango:8080'
STAGE: 'local' # or 'production'
volumes:
- ./nariDockerDat/sv_django-ssl_certs:/var/lib/https-portal
sv_django:
image: sv_django:4
build: ./nariDockerDat/sv_django-uwsgi-nginx
hostname: svdjango
volumes:
- ./nariDockerDat/sv_django-uwsgi-nginx/app:/code/app
ports:
- "38080:8080"
cl_ubu22gvis:
image: gvis-ubu22:22gvis
privileged: true
hostname: clubu22
ports:
- "33389:3389"
volumes:
- ./nariDockerDat/cl_ubun22:/gvis
tty: true
shm_size: 512m
compose.ymlを使うように運用スクリプトを更新
ホンマは起動スクリプトの最初のほうにcssのコピーとかいろいろ前処理あるんやけど、compose使ってるとこだけ抜粋。
:(中略)
/usr/bin/docker compose start sv_mariadb1011
sleep 20
/usr/bin/docker compose up --no-recreate -d
exit
docker
とcompose
の間にあったハイフン外しただけですわな。
昔はdependとか書いてたこともあるけど、「起動の順位は守るけど、db待受できた状態まで待つかはしらんよ」ってことやったから、mariadbだけ先に起動して20秒だけ待たせて他のコンテナ起動してる。
これがoracleのコンテナやったら2分ぐらい待たせてた。
起動したらこんな感じ。
nari@nafslinux-ubu22:/docker$ sh ./dockerStart.sh
[+] Running 1/1
✔ Container docker-sv_mariadb1011-1 Started 0.4s
[+] Running 5/5
✔ Container docker-sv_https-portal-1 Started 1.2s
✔ Container docker-sv_jupyter-1 Started 1.1s
✔ Container docker-sv_mariadb1011-1 Running 0.0s
✔ Container docker-cl_ubu22gvis-1 Started 1.0s
✔ Container docker-sv_django-1 Started 1.0s
nari@nafslinux-ubu22:/docker$
ずいぶん前に何かの理由で--no-recreate
ってつけたんやけど、なんでやったか忘れた。
10日ほど経って不具合ないから、それでもちゃんと動いてはくれてそう。
macの中のminikubeには影響ない
今はmacの中でminikube使って試してる。
minikubeはコントロールプレーンっていうか、根っこの機能がdockerコンテナとして動いてる。
brewで入れたら動くけど、kubectlをスクリプトの中に書いてPod操作とかに使ってるから、composeは使ってない。
ちょっと確認でminikube ssh
して気づいたけど、composeが使えんのやなぁ。
nari@gvis-mac minikube % minikube ssh
_ _
_ _ ( ) ( )
___ ___ (_) ___ (_)| |/') _ _ | |_ __
/' _ ` _ `\| |/' _ `\| || , < ( ) ( )| '_`\ /'__`\
| ( ) ( ) || || ( ) || || |\`\ | (_) || |_) )( ___/
(_) (_) (_)(_)(_) (_)(_)(_) (_)`\___/'(_,__/'`\____)
$ docker version
Client:
Version: 24.0.4
API version: 1.43
Go version: go1.20.5
Git commit: 3713ee1
Built: Fri Jul 7 14:49:50 2023
OS/Arch: linux/amd64
Context: default
Server: Docker Engine - Community
Engine:
Version: 24.0.4
API version: 1.43 (minimum version 1.12)
Go version: go1.20.5
Git commit: 4ffc614
Built: Fri Jul 7 14:51:12 2023
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: v1.7.2
GitCommit: 0cae528dd6cb557f7201036e9f43420650207b58
runc:
Version: 1.1.7
GitCommit: 860f061b76bb4fc671f0f9e900f7d80ff93d4eb7
docker-init:
Version: 0.19.0
GitCommit: de40ad0
$ docker compose version
docker: 'compose' is not a docker command.
See 'docker --help'
$
こうしてdocker-composeから脱却完了ね。
linuxにcurlで取ってきたモジュールも潰した。