找不到Docker启动脚本

时间:2018-08-20 17:41:30

标签: docker docker-compose dockerfile docker-windows

我正在使用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的任何想法? 谢谢

2 个答案:

答案 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从未构建过