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"]