【发布时间】:2016-01-05 17:21:55
【问题描述】:
我想在运行后立即运行一个脚本
`docker-compose up -d`
这是我的 docker-compose.yml 的 sn-p。其他设置是 mysql 服务器,redis...等....但它们没有引起任何问题
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
所以每当我运行docker-compose up -d 或docker-compose up 时,它都会停止。 (容器不会继续运行)。虽然我的 shell 脚本很简单(运行 echos...或 phpunit)。这是我的脚本。
#!/bin/bash
echo running post install scripts for web..;
cd /srv/myweb
npm install
composer self-update
composer update
这是我得到的错误。就像服务器(nginx)还没有运行。此外,如果我使用 exec bash 连接到服务器,我会检查进程。我没有看到 nginx 正在运行(还)。
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
那么为什么它会退出,尽管脚本在语法上是正确的?我怎样才能让它正确运行? (我在做什么,设置错了!)
【问题讨论】:
-
您尝试让事情在启动后自动运行还是手动运行正常?你可以使用
docker exec $(docker-compose ps -q web) some_command在已经运行的容器中运行。
标签: bash nginx docker docker-compose