我正在使用Windows 10的Docker来启动eureka和配置服务器。我正在尝试添加启动脚本,以确保eureka在启动配置服务器之前已完全启动。以下文件存储在我的项目的根目录中:
Dockerfile-配置服务器
FROM openjdk:8-jdk-alpine
RUN apk update && apk upgrade && apk add netcat-openbsd && apk add curl
RUN mkdir -p /usr/local/configserver
ADD ./target/config-server-0.0.1-SNAPSHOT.jar /usr/local/configserver/
ADD run.sh run.sh
RUN chmod +x run.sh
CMD ./run.sh
run.sh
#!/bin/sh
echo "********************************************************"
echo "Waiting for the eureka server to start on port $EUREKASERVER_PORT"
echo "********************************************************"
while ! `nc -z eurekaserver $EUREKASERVER_PORT`; do sleep 3; done
echo ">>>>>>>>>>>> Eureka Server has started"
echo "********************************************************"
echo "Starting Configuration Server
echo "********************************************************"
java -jar /usr/local/configserver/config-server-0.0.1-SNAPSHOT.jar
使用以下docker-compose:
docker-compose.yml
version: '2.2'
services:
eurekaserver:
image: eureka-naming-server
ports:
- "8761:8761"
configserver:
image: config-server
ports:
- "10000:10000"
environment:
EUREKASERVER_PORT: 8761
EUREKASERVER_URI: "http://eurekaserver:8761/eureka/"
我得到以下输出:
C:\docker\prj> docker-compose -f docker-compose.yml up
Creating eureka-naming-server_configserver_1 ... done
Creating eureka-naming-server_eurekaserver_1 ... done
Attaching to eureka-naming-server_configserver_1, eureka-naming-server_eurekaserver_1
configserver_1 | /bin/sh: ./run.sh: not found
关于为什么找不到run.sh的任何想法? 谢谢
答案 0 :(得分:2)
亲爱的我认为您的问题在于:
ADD run.sh run.sh
您正尝试将run.sh从主机复制到docker映像,确保run.sh存在于您的项目目录中,在您的情况下,该目录应位于Dockerfile旁边。
我在git repo中有一个像您的案例这样的运行示例: https://github.com/iabughosh/microservices,开发分支,尚未合并到主分支。
答案 1 :(得分:0)
您未在docker-compose文件中指定dockerfile。您需要删除image: xyz
并改写build: .
(假设dockerfile与docker-compose.yml位于同一位置)
实际上,您的dockerfile从未构建过