/ bin / sh:设置docker-compose入口点时没有此类文件或目录

我有一个运行数据库迁移的容器():

FROM golang:1.12-alpine3.10 AS downloader
ARG VERSION

RUN apk add --no-cache git gcc musl-dev

WORKDIR /go/src/github.com/golang-migrate/migrate

COPY . ./

ENV GO111MODULE=on
ENV DATABASES="postgres mysql redshift cassandra spanner cockroachdb clickhouse mongodb sqlserver firebird"
ENV SOURCES="file go_bindata github github_ee aws_s3 google_cloud_storage godoc_vfs gitlab"

RUN go build -a -o build/migrate.linux-386 -ldflags="-s -w -X main.Version=${VERSION}" -tags "$DATABASES $SOURCES" ./cmd/migrate

FROM alpine:3.10

RUN apk add --no-cache ca-certificates

COPY --from=downloader /go/src/github.com/golang-migrate/migrate/build/migrate.linux-386 /migrate

ENTRYPOINT ["/migrate"]
CMD ["--help"]

我想将其集成到docker-compose中,并使其依赖于Postgres数据库服务。但是,由于必须等到数据库完全初始化后才能将migrate命令包装在脚本中,因此需要替换迁移容器的入口点。我正在使用等待脚本来轮询数据库,这是一个纯shell(不是bash)脚本,因此应在高山容器中工作。

这是在docker-compose中定义服务的方式:

services:
    database:
        # ...
    migration:
        depends_on:
            - database
        image: migrate/migrate:v4.7.0
        volumes:
            - ./scripts/migrations:/migrations
            - ./scripts/wait-for:/wait-for
        entrypoint: ["/bin/sh"]
        command: ["./wait-for database:5432", "--", "./migrate", "-path", "/migrations", "-database", "postgres://test:test@database:5432/test?sslmode=disable",  "-verbose", "up"]

docker-compose up在此运行失败

migration_1           | /bin/sh: can't open './wait-for database:5432': No such file or directory

使用本身运行迁移容器

docker run -it --entrypoint /bin/sh -v $(pwd)/scripts/wait-for:/wait-for  migrate/migrate:v4.7.0

确实可以正常工作,脚本在那里并且可以与一起运行/bin/sh ./wait-for

那么,为什么它作为docker-compose的一部分失败了?

约翰·布林格

如果您仔细阅读错误消息,将会发现找不到的文件不是./waitfor,而是./wait-for database:5432这与您的输入文件一致,其中整个内容作为command列表的第一个元素给出

        command: ["./wait-for database:5432", "--", "./migrate", "-path", "/migrations", "-database", "postgres://test:test@database:5432/test?sslmode=disable",  "-verbose", "up"]

我不清楚您实际想要的是什么,因为提出的可行替代方案似乎并不完全相似,但可能是

        command: ["./wait-for", "database:5432", "--", "./migrate", "-path", "/migrations", "-database", "postgres://test:test@database:5432/test?sslmode=disable",  "-verbose", "up"]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Docker容器:/ bin / sh:cat:无此类文件或目录

来自分类Dev

将Docker挂载到容器中显示可执行文件,但出现以下错误:/ usr / bin / docker:没有此类文件或目录

来自分类Dev

docker-compose构建失败,没有此类文件或目录

来自分类Dev

-bash:bin / kafka-topics.sh:没有通过ambari安装的此类文件或目录

来自分类Dev

Docker无法启动没有此类文件或目录的容器

来自分类Dev

在Tensorflow Docker映像上启动convolutional.py脚本时,“没有此类文件或目录”

来自分类Dev

运行Docker映像时没有此类文件或目录错误

来自分类Dev

chroot:无法运行命令“ / bin / bash”:没有此类文件或目录

来自分类Dev

youtube-dl / usr / bin / env:“ python”:没有此类文件或目录

来自分类Dev

youtube-dl / usr / bin / env:“ python”:没有此类文件或目录

来自分类Dev

/ bin / bash:/ bin / java:MacOS中的Yarn应用程序中没有此类文件或目录错误

来自分类Dev

Docker:构建映像时出现“ lstat没有此类文件或目录”错误。文件在那里

来自分类Dev

lstate错误:使用Docker build命令从自定义映像构建Docker时,没有此类文件或目录

来自分类Dev

Nodejs Azure部署失败:ENOENT:没有此类文件或目录,stat'/home/site/wwwroot/node_modules/.bin/semver'

来自分类Dev

/ bin / sh:/root/start-docker.sh:docker中的exec命令时权限被拒绝

来自分类Dev

无法在docker中运行脚本文件,没有此类文件或目录

来自分类Dev

尝试设置用户systemd服务:已加载:找不到(原因:没有此类文件或目录)

来自分类Dev

Docker守护程序无法启动:inotify_add_watch:没有此类文件或目录

来自分类Dev

将完整路径传递给Docker映像时,“没有此类文件或目录”,但与相同文件夹的相对路径一起使用

来自分类Dev

/ bin / sh ^ M:解释错误:没有这样的文件或目录

来自分类Dev

/ bin / sh ^ M:解释错误:没有这样的文件或目录

来自分类Dev

bash:/home/trotteville/root/bin/thisroot.sh:没有这样的文件或目录

来自分类Dev

-bash:./conn.sh:/ usr / bin / bash:错误的解释器:没有这样的文件或目录

来自分类Dev

#!/ bin / sh和#!/ bin / bash有什么区别?

来自分类Dev

为什么在基于阿尔卑斯的docker-compose构建中找不到bin / sh?

来自分类Dev

Nginx,Certbot和Docker撰写:/etc/nginx/user.conf.d / *。conf:没有此类文件或目录

来自分类Dev

当docker使用`/ bin / sh -c`运行SIGTERM时未到达节点脚本

来自分类Dev

为什么Docker“在$ PATH中找不到可执行文件`/ bin / sh`”?

来自分类Dev

Docker:找不到容器命令'/ bin / sh'

Related 相关文章

  1. 1

    Docker容器:/ bin / sh:cat:无此类文件或目录

  2. 2

    将Docker挂载到容器中显示可执行文件,但出现以下错误:/ usr / bin / docker:没有此类文件或目录

  3. 3

    docker-compose构建失败,没有此类文件或目录

  4. 4

    -bash:bin / kafka-topics.sh:没有通过ambari安装的此类文件或目录

  5. 5

    Docker无法启动没有此类文件或目录的容器

  6. 6

    在Tensorflow Docker映像上启动convolutional.py脚本时,“没有此类文件或目录”

  7. 7

    运行Docker映像时没有此类文件或目录错误

  8. 8

    chroot:无法运行命令“ / bin / bash”:没有此类文件或目录

  9. 9

    youtube-dl / usr / bin / env:“ python”:没有此类文件或目录

  10. 10

    youtube-dl / usr / bin / env:“ python”:没有此类文件或目录

  11. 11

    / bin / bash:/ bin / java:MacOS中的Yarn应用程序中没有此类文件或目录错误

  12. 12

    Docker:构建映像时出现“ lstat没有此类文件或目录”错误。文件在那里

  13. 13

    lstate错误:使用Docker build命令从自定义映像构建Docker时,没有此类文件或目录

  14. 14

    Nodejs Azure部署失败:ENOENT:没有此类文件或目录,stat'/home/site/wwwroot/node_modules/.bin/semver'

  15. 15

    / bin / sh:/root/start-docker.sh:docker中的exec命令时权限被拒绝

  16. 16

    无法在docker中运行脚本文件,没有此类文件或目录

  17. 17

    尝试设置用户systemd服务:已加载:找不到(原因:没有此类文件或目录)

  18. 18

    Docker守护程序无法启动:inotify_add_watch:没有此类文件或目录

  19. 19

    将完整路径传递给Docker映像时,“没有此类文件或目录”,但与相同文件夹的相对路径一起使用

  20. 20

    / bin / sh ^ M:解释错误:没有这样的文件或目录

  21. 21

    / bin / sh ^ M:解释错误:没有这样的文件或目录

  22. 22

    bash:/home/trotteville/root/bin/thisroot.sh:没有这样的文件或目录

  23. 23

    -bash:./conn.sh:/ usr / bin / bash:错误的解释器:没有这样的文件或目录

  24. 24

    #!/ bin / sh和#!/ bin / bash有什么区别?

  25. 25

    为什么在基于阿尔卑斯的docker-compose构建中找不到bin / sh?

  26. 26

    Nginx,Certbot和Docker撰写:/etc/nginx/user.conf.d / *。conf:没有此类文件或目录

  27. 27

    当docker使用`/ bin / sh -c`运行SIGTERM时未到达节点脚本

  28. 28

    为什么Docker“在$ PATH中找不到可执行文件`/ bin / sh`”?

  29. 29

    Docker:找不到容器命令'/ bin / sh'

热门标签

归档