Pelo que entendi, eu deveria conseguir executar um script de shell ao criar um contêiner, copiando-o para o diretório /docker-entrypoint-initdb.d por meio do meu Dockerfile.
O problema que tenho é que depois de executar o docker compose up, recebo o seguinte erro -
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
Eu esperava que o script de shell fosse executado e criasse um arquivo chamado test. Confusamente, consegui remover esse script do meu Dockerfile e executar no contêiner e tocar em um arquivo sem problemas. Também tentei adicionar RUN ["chmod", "u+x", "/docker-entrypoint-initdb.d/shell.sh"]
ao meu Dockerfile sem sucesso. Veja meus arquivos docker-compose.yml, Dockerfile e shell.sh abaixo.
TIA por qualquer ajuda ou orientação sobre isso.
Arquivo Docker:
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