![](/img/trans.png)
[英]Running a Bash Script from (on Docker Container B) from Docker Container A
[英]Running script in docker container
我嘗試設置兩個泊塢窗。 一個帶有服務,另一個帶有數據庫。 在具有服務的Docker上,我嘗試從https://github.com/vishnubob/wait-for-it運行腳本wait-for-it.sh。
我嘗試使用docker-compose文件來完成所有這些工作,但我將問題隔離到在容器開頭運行.sh文件。
FROM openjdk:8-jdk-alpine
RUN apk add --no-cache bash
COPY ./target/docker-demo-0.0.1-SNAPSHOT.jar /app.jar
COPY ./src/main/resources/wait-for-it.sh /wait-for-it.sh
ENTRYPOINT ["/wait-for-it.sh", "192.168.99.100:5432", "--", "java", "-jar",
"/app.jar"]
EXPOSE 8080
我正在使用高山圖像中的干凈灰燼,接下來,我正在安裝bash。 當然,我正在將腳本的第一行代碼從
#!/usr/bin/env bash
進入
#!/bin/sh
要么
#!/bin/bash
沒什么 我看到了如何在Alpine Docker容器中運行bash腳本的主題,但這也沒有幫助。
我總是收到“沒有這樣的文件或目錄”。 我當時很亂
ENTRYPOINT ["/wait-for-it.sh"...
通過增加 ”。” 要么 ”。/”
我正在Windows 8上使用docker工具在Windows上構建的整個項目。也許是有原因的?
我遇到過同樣的問題。 我花了兩天的時間弄清楚為什么它不起作用。 我的主機是Windows,因此為dos格式化了wait-it.sh文件。
dos2unix wait-for-it.sh
命令才能將文件轉換為Unix系統。 ( 將文件轉換為UNIX系統 ) RUN apk add --no-cache bash
COPY wait-for-it.sh /wait-for-it.sh
RUN chmod +x /wait-for-it.sh
之后,在容器啟動時,運行了wait-it.sh。
如果您使用的是GIT,則git會根據主機來處理行尾。 您必須在項目內部添加.gitattributes
文件,並將*.sh eol=lf
這行添加到此文件中。 因此,您告訴所有.sh文件的行尾都以LF結尾
COPY ./src/main/resources/wait-for-it.sh /wait-for-it.sh
這是罪魁禍首。 如果腳本在絕對目錄中,請使用此選項
COPY /src/main/resources/wait-for-it.sh /wait-for-it.sh
或如果腳本位於相對目錄中,則使用此選項
COPY src/main/resources/wait-for-it.sh /wait-for-it.sh
然后運行
RUN chmod 700 /wait-for-it.sh
在復制語句中,嘗試僅提供目標文件夾。
例如COPY ./src/main/resources/wait-for-it.sh / app
還要設置容器開始的工作目錄
WORKDIR / app
還要確保您已對文件給出執行權限,如他的答案中建議的@vamsi。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.