我将在一个坞-撰写入口点内运行一个shell脚本。但是当我做docker-compose up
的时候,就开始了,但是找不到shell脚本。没有shell脚本,一切都很好。但是我只想添加shell脚本,因为我需要设置一些参数。
这是我的docker-compose.yml
version: "3.7"
services:
my-container:
image: my_image:latest
volumes:
- ${LOGDIR}:/app/log/
- ${SCRIPTS}:/app/scripts/
ports:
- ${PORT}:80
entrypoint:
- /bin/sh
- /app/scripts/api_reload.sh
这是在api_reload.sh
里面
# !/usr/bin/env
gunicorn app.inf.api.api_pks:app \
-b 0.0.0.0:80 \
-k uvicorn.workers.UvicornWorker \
--timeout 1000
这是错误信息
Recreating information-extraction1 ... done
Attaching to information-extraction_my-container_1
: not found_1 | /app/scripts/api_reload.sh: 3: /app/scripts/api_reload.sh:
my-container_1 | [2021-12-10 00:01:20 +0000] [8] [INFO] Starting gunicorn 20.0.4
my-container_1 | [2021-12-10 00:01:20 +0000] [8] [INFO] Listening at: http://127.0.0.1:8000 (8)
my-container_1 | [2021-12-10 00:01:20 +0000] [8] [INFO] Using worker: sync
my-container_1 | [2021-12-10 00:01:20 +0000] [10] [INFO] Booting worker with pid: 10
my-container_1 | 2021-12-10 00:01:21,130 - INFO - api - <module>, line 50: PREDICTION HAS BEEN STARTED
谢谢你的帮助
发布于 2021-12-10 07:02:45
但是,语法是正确的,因为dir是挂载的,您必须确保运行容器的用户能够看到它。
我已经复制了一个简短的例子,我可以确认它是有效的。
.
├── docker-compose.yml
└── scripts
└── api_reload.sh
api_reload.sh
含量
# !/usr/bin/env
echo "entry point!"
docker-compose.yml
文件
services:
my-container:
image: ubuntu
volumes:
- ./scripts/:/app/scripts/
entrypoint:
- /bin/sh
- /app/scripts/api_reload.sh
当容器启动时,将执行入口点。
docker-compose up
# Starting entrypoint_my-container_1 ... done
# Attaching to entrypoint_my-container_1
# my-container_1 | entry point!
# entrypoint_my-container_1 exited with code 0
https://stackoverflow.com/questions/70298294
复制相似问题