如何解决Dockerfile无法启动CMD脚本
我在Dockerfile中有这个
FROM node:alpine
COPY seed.sh /
RUN chmod +x /seed.sh
RUN apk add --no-cache bash
CMD pwd; ls -al; cat seed.sh; ./seed.sh
然后我构建docker-compose并启动它:
[docker-compose.yml部分]
...
dbseeder:
container_name: dbseeder
build:
context: ./db-seeder
dockerfile: Dockerfile
depends_on:
- db
...
构建/运行
docker-compose build --no-cache
docker-compose up
上输出如下:
dbseeder | /
dbseeder | total 68
dbseeder | drwxr-xr-x 1 root root 4096 Sep 2 12:27 .
dbseeder | drwxr-xr-x 1 root root 4096 Sep 2 12:27 ..
dbseeder | -rwxr-xr-x 1 root root 0 Sep 2 12:27 .dockerenv
dbseeder | drwxr-xr-x 1 root root 4096 Sep 2 12:27 bin
dbseeder | drwxr-xr-x 5 root root 340 Sep 2 12:27 dev
dbseeder | drwxr-xr-x 1 root root 4096 Sep 2 12:27 etc
dbseeder | drwxr-xr-x 1 root root 4096 Aug 12 21:22 home
dbseeder | drwxr-xr-x 1 root root 4096 Aug 12 21:22 lib
dbseeder | drwxr-xr-x 5 root root 4096 Apr 23 06:25 media
dbseeder | drwxr-xr-x 2 root root 4096 Apr 23 06:25 mnt
dbseeder | drwxr-xr-x 1 root root 4096 Aug 12 21:22 opt
dbseeder | dr-xr-xr-x 244 root root 0 Sep 2 12:27 proc
dbseeder | drwx------ 1 root root 4096 Aug 12 21:22 root
dbseeder | drwxr-xr-x 2 root root 4096 Apr 23 06:25 run
dbseeder | drwxr-xr-x 2 root root 4096 Apr 23 06:25 sbin
dbseeder | -rwxrwxrwx 1 root root 197 Sep 2 12:27 seed.sh
dbseeder | drwxr-xr-x 2 root root 4096 Apr 23 06:25 srv
dbseeder | dr-xr-xr-x 11 root root 0 Sep 2 12:27 sys
dbseeder | drwxrwxrwt 1 root root 4096 Aug 12 21:22 tmp
dbseeder | drwxr-xr-x 1 root root 4096 Aug 12 21:22 usr
dbseeder | drwxr-xr-x 1 root root 4096 Apr 23 06:25 var
dbseeder | #!/bin/bash
dbseeder |
dbseeder | echo "Seeding database..."
dbseeder |
dbseeder | cd seeders
dbseeder | npx sequelize db:seed:all --url 'mysql://root:pass123@dbserver/mydb'
dbseeder |
dbseeder | echo "Seeding done."
dbseeder | /bin/sh: ./seed.sh: not found
无论我做什么,都找不到seed.sh,但是正如您所见,它在那里。
我在做什么错了?
编辑
是的,我尝试使用'/ bin / sh'
[部分上个输出]
...
dbseeder | #!/bin/sh
dbseeder |
dbseeder | echo "Seeding database..."
dbseeder |
dbseeder | cd seeders
dbseeder | #sequelize db:seed:all
dbseeder | npx sequelize db:seed:all --url 'mysql://root:pass123@dbserver/mydb'
dbseeder |
dbseeder | echo "Seeding done."
dbseeder | /bin/sh: ./seed.sh: not found
...
解决方法
好吧,事实证明node:alpine将节点REPL作为入口点。 因此,必须使其在Dockerfile中完成才能使其工作:
ENTRYPOINT ["/bin/sh","seed.sh"]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。