首页 > 解决方案 > 如何等待命令在容器内完成执行

问题描述

使用以下 dockerfile:

FROM golang:1.9 AS build-go
RUN go get github.com/grafana/grafana; exit 0
WORKDIR $GOPATH/src/github.com/grafana/grafana
RUN go run build.go setup
RUN go run build.go build

FROM node:8 AS build-node
COPY --from=build-go $HOME/go/src/github.com/grafana/grafana .
RUN npm install -g yarn
RUN yarn install --pure-lockfile
CMD npm run watch
EXPOSE 3000

我创建了一个镜像,然后它被 bash 文件用来启动一个容器:

docker run -d -P --name=grafanabuildfromsrc myimg
docker exec grafanabuildfromsrc ./bin/linux-amd64/grafana-server

./bin/linux-amd64/grafana-server需要npm run build一次完成所有文件的构建。当前脚本将在构建完成之前执行它。

我想要的是,在执行 bash 文件中的第二个命令之前,它应该等待容器内的命令首先完成。这可能吗?

一个可能很重要的说明:grafana-server什么"Failed to detect generated javascript files in public/build时候npm run watch没有完成。

我如何实现这一目标?

标签: bashshelldockerdockerfilegrafana

解决方案


最简单的解决方案可能会在npm run build之前运行npm run watch


推荐阅读