voglio eseguire uno script, subito dopo l'esecuzionefinestra mobile-composizione yml esecuzione di uno script dopo un massimo
`docker-compose up -d`
Ecco il mio frammento di docker-compose.yml
. Le altre impostazioni sono server MySQL, Redis ... ecc .... ma non stanno causando problemi
web:
image: nginx
container_name: web-project
volumes:
- ./code:/srv
working_dir: /srv/myweb
extra_hosts:
- "myweb.local:127.0.0.1"
ports:
- 8081:80
# tty: true
command: sh /srv/scripts/post-run-web.sh
Così ogni volta che ho eseguito docker-compose up -d
oder docker-compose up
tutto si ferma. (i contenitori non continuano a funzionare). Anche se il mio script di shell è semplice (eseguendo echos ... o phpunit). Ecco la mia sceneggiatura.
#!/bin/bash
echo running post install scripts for web..;
cd /srv/myweb
npm install
composer self-update
composer update
E questo è l'errore che ottengo. È come se il server (nginx) non fosse ancora in esecuzione. Inoltre se mi collego al server usando exec bash, e controllo i processi. Non vedo nginx in esecuzione (ancora).
web_1 | You are already using composer version 7a9eb02190d334513e99a479510f87eed18cf958.
web_1 | Loading composer repositories with package information
web_1 | Updating dependencies (including require-dev)
web_1 | Generating autoload files
web-project exited with code 0
Gracefully stopping... (press Ctrl+C again to force)
Stopping mysql-project... done
Stopping rabbitmq-project... done
Stopping redis-project... done
quindi perché è in esecuzione, sebbene lo script sia corretto per la sintassi? come posso farlo funzionare correttamente? (cosa sto facendo, impostazione sbagliata!)
Il tuo tentativo di far funzionare automaticamente le cose dopo o è ok? puoi usare 'docker exec $ (docker-compose ps -q web) some_command' per eseguire le cose in un contenitore già in esecuzione. –