Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript &引用;入口点[";/init.sh";];在Dockerfile生产中;没有这样的文件或目录;当使用Docker Compose时?_Javascript_Node.js_Docker_Docker Compose_Dockerfile - Fatal编程技术网

Javascript &引用;入口点[";/init.sh";];在Dockerfile生产中;没有这样的文件或目录;当使用Docker Compose时?

Javascript &引用;入口点[";/init.sh";];在Dockerfile生产中;没有这样的文件或目录;当使用Docker Compose时?,javascript,node.js,docker,docker-compose,dockerfile,Javascript,Node.js,Docker,Docker Compose,Dockerfile,考虑docker compose文件: version: '3.0' volumes: data: driver: local networks: simple-network: driver: bridge services: postgres: container_name: postgres image: postgres restart: unless-stopped

考虑
docker compose
文件:

version: '3.0'

volumes:
    data:
        driver: local

networks: 
    simple-network:
        driver: bridge

services:
    postgres:
        container_name: postgres
        image: postgres
        restart: unless-stopped
        environment:
            POSTGRES_DB: node-crud
            POSTGRES_USER: postgres
            POSTGRES_PASSWORD: postgres
        ports: 
            - "5432:5432"
        volumes: 
            - data:/var/lib/postgresql/data
        networks: 
            - simple-network

    api:
        container_name: api
        image: api
        restart: unless-stopped
        build: 
            context: simple-node-api
            dockerfile: Dockerfile
        ports: 
            - "3000:3000"
        environment:
            - NODE_ENV=production
            - DATABASE=node-crud
            - USERNAME=postgres
            - PASSWORD=postgres
            - HOST=postgres
        networks: 
            - simple-network
        depends_on: 
            - postgres
使用api的Dockerfile:

FROM node:latest
WORKDIR /api
COPY package.json .
COPY yarn.lock .
COPY init.sh .
RUN yarn install
COPY . .
ENTRYPOINT ["./init.sh"]
以及
init.sh
脚本:

#!/bin/sh
yarn run migrate
yarn run start
当我运行
docker compose up
时,输出为:

Creating network "simple-example_simple-network" with driver "bridge"
Creating postgres ... done                                                                                                                                                       Creating api      ... done                                                                                                                                                       Attaching to postgres, api
api         | standard_init_linux.go:211: exec user process caused "no such file or directory"
postgres    |
postgres    | PostgreSQL Database directory appears to contain a database; Skipping initialization
postgres    |
postgres    | 2020-11-25 13:35:12.683 UTC [1] LOG:  starting PostgreSQL 13.1 (Debian 13.1-1.pgdg100+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 8.3.0-6) 8.3.0, 64-bit
postgres    | 2020-11-25 13:35:12.683 UTC [1] LOG:  listening on IPv4 address "0.0.0.0", port 5432
postgres    | 2020-11-25 13:35:12.684 UTC [1] LOG:  listening on IPv6 address "::", port 5432
postgres    | 2020-11-25 13:35:12.698 UTC [1] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
postgres    | 2020-11-25 13:35:12.719 UTC [24] LOG:  database system was shut down at 2020-11-25 13:34:01 UTC
postgres    | 2020-11-25 13:35:12.738 UTC [1] LOG:  database system is ready to accept connections
api exited with code 1
api exited with code 1
api exited with code 1
api exited with code 1
api exited with code 1
Gracefully stopping... (press Ctrl+C again to force)
Stopping api      ... done                                                                                                                                                       Stopping postgres ...
Killing postgres  ...
ERROR: Aborting.
我在Windows 10下工作,为什么它甚至不生成这样的文件或目录
尽管文件存在于路径中?

入口点应为绝对路径

尝试:


确保
/api/init.sh
设置了
+x
exec位。

尝试删除“/”并检查脚本是否具有执行权限。还应再次检查脚本是否具有Unix行结尾。为什么不使用
入口点纱线运行迁移和纱线运行开始
?不需要init.sh。你所说的
+x
位是什么意思?如何设置它?
运行chmod+x/api/init.sh
ENTRYPOINT ["/api/init.sh"]