【发布时间】:2020-11-21 16:58:56
【问题描述】:
我是否必须首先克隆 wait-for-it 存储库并编辑 wait-for-it.sh 文件的部分内容?
https://github.com/vishnubob/wait-for-it/blob/master/wait-for-it.sh
我正在尝试在我的客户服务连接并运行其服务器后 5 秒后触发我的主文件。 (或者只要客户服务正确连接服务器)。
我知道在 Dockerfile 中,我们需要将这些命令添加到其中(将文件复制到 workdir,并将 shell 脚本作为可执行文件运行。)
...
COPY wait-for-it.sh .
RUN chmod +x /wait-for-it.sh
...
这是我当前的 Docker-Compose 文件
version: '3'
services:
books:
build: './books'
container_name: "horus-books"
ports:
- "30043:30043"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
customers:
depends_on:
- books
build: './customers'
container_name: "horus-customers"
ports:
- "6000:6000"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
main:
depends_on:
- customers
build: './main'
container_name: "horus-main"
ports:
- "4555:4555"
command: ["./wait-for-it.sh", "customers:6000", "--", "node", "main.js"]
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
主要服务 Dockerfile
FROM node:12.14.0
WORKDIR /usr/src/app
COPY package*.json ./
COPY . /usr/src/app
COPY wait-for-it.sh .
RUN chmod +x /wait-for-it.sh
RUN npm install
EXPOSE 4555
CMD ["node", "main.js"]
【问题讨论】:
-
是在构建容器时等待,还是在运行容器时等待?
-
@tadman 我想在客户服务器运行时等待(所以在运行容器时)。
-
RUN命令在构建阶段执行一次,它们不会影响正在运行的容器。您需要更改您的CMD或ENTRYPOINT。
标签: docker docker-compose dockerfile docker-registry