【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」が生成されました!!
-0 Comment-