【docker】dockerのビルド時にshを実行する

dockerを構築していると、ビルドした時に色々自動で設定をしたい場面は色々出てきます。
特にパーミッション周りは自動で整えたい所。

そこで、docker起動時に一緒にshを動かしてくれるのが

/docker-entrypoint.sh

です!

ボリュームでつなげて

volumes:
– ./docker-entrypoint.sh:/docker-entrypoint.sh

DockergileにENTRYPOINT追加でいけます

ENTRYPOINT [“/docker-entrypoint.sh”]

では実際に動かして簡単なシェルをビルド時に動かしてみます。

フォルダ構成
– web
— Dockerfile
docker-compose.yml
docker-entrypoint.sh

docker-compose.yml

services:
web:
build:
context: ./web
volumes:
- ./docker-entrypoint.sh:/docker-entrypoint.sh

privileged: true # 全権限を付与
stdin_open: true # シェルを使えるように
tty: true # ターミナル許可
command: /sbin/init

Dockerfile

FROM almalinux
ENTRYPOINT ["/docker-entrypoint.sh"]

docker-entrypoint.sh

#!/bin/sh
touch /home/test.txt
exec "$@"

これだけ!

touch /home/test.txt

でhome直下にテキストファイルが出来ていれば成功

ではやってみます。

docker-compose up -d --build
[+] Running 2/2
✔️ web Built
✔️ Container test-web-1 Started

docker-compose exec -it web bash
[root@f6c4b7749241 /]# cd /home/
[root@f6c4b7749241 home]# ls
test.txt
[root@f6c4b7749241 /]# cd /home/
[root@f6c4b7749241 home]# ls
test.txt

成功!!

home直下に「test.txt」が生成されました!!

コメント