据我了解,我应该能够在创建容器时通过我的 Dockerfile 将其复制到 /docker-entrypoint-initdb.d 目录来运行 shell 脚本。
我遇到的问题是运行 docker compose up 后,收到以下错误 -
mysql_container-1 | 2024-12-16 21:14:21+00:00 [Note] [Entrypoint]: /usr/local/bin/docker-entrypoint.sh: running /docker-entrypoint-initdb.d/shell.sh
mysql_container-1 | touch: cannot touch '/mysql_server/test': Permission denied
我原本希望 shell 脚本能够运行并创建一个名为 test 的文件。令人困惑的是,我能够从 Dockerfile 中删除此脚本,并执行到容器中并触摸文件,没有任何问题。我还尝试将其添加RUN ["chmod", "u+x", "/docker-entrypoint-initdb.d/shell.sh"]
到 Dockerfile 中,但无济于事。请参阅下面的 docker-compose.yml、Dockerfile 和 shell.sh 文件。
TIA 对此提供任何帮助或指导。
Dockerfile:
FROM mysql:lts
WORKDIR /mysql_server
COPY shell.sh /docker-entrypoint-initdb.d
RUN ["chmod", "u+x", "/docker-entrypoint-initdb.d/shell.sh"]
docker-compose.yml:
services:
mysql_container:
image: mysql_image:Dockerfile
build:
context: .
ports:
- "3306:3306"
environment:
- MYSQL_ALLOW_EMPTY_PASSWORD=yes
- MYSQL_DATABASE=docker_db
shell.sh:
#!/bin/sh
touch /mysql_server/test