GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Führen Sie ein Shell-Skript über den Befehl docker-compose im Container aus

Als erstes kopieren Sie entrypoint.sh bis $APP die Sie von Ihren Build-Argumenten übergeben haben, aber Sie haben das nicht erwähnt, und zweitens müssen Sie die Berechtigung für entrypoint.sh festlegen . Es ist besser, diese drei Zeilen hinzuzufügen, damit Sie command nicht hinzufügen müssen in der docker-compose-Datei.

FROM python:3.6-alpine3.7
RUN apk add --no-cache --update \
    python3 python3-dev gcc \
    gfortran musl-dev \
    libffi-dev openssl-dev
RUN pip install --upgrade pip
ENV PYTHONUNBUFFERED 1
ENV APP /app
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN mkdir $APP
WORKDIR $APP
ADD requirements.txt .
RUN pip install -r requirements.txt

COPY . .
# These line for /entrypoint.sh
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
entrypoint "/entrypoint.sh"

docker compose for api wird sein

  api:
    build: .
    container_name: app
    expose:
      - "5000"

oder Sie können Ihre eigenen verwenden, die auch gut funktionieren

version: "2"

services:
  api:
    build: .
    container_name: app
    command: /bin/sh -c "entrypoint.sh"
    expose:
      - "5000"

Jetzt können Sie auch mit dem Docker-Run-Befehl nachsehen.

docker run -it --rm myapp


Linux
  1. Warum führt „sudo Su“ in einem Shell-Skript den Rest des Skripts nicht als Root aus?

  2. Wie führe ich einen Befehl in einem laufenden Systemd-Container aus?

  3. Bash-Skript:Verwendung eines Skriptbefehls aus einem Bash-Skript zum Protokollieren einer Sitzung

  4. Wie kann ich eine Funktion von einem Skript in der Befehlszeile ausführen?

  5. Ausführen eines von stdin geleiteten Skripts (Linux/Shell-Skripterstellung)

So führen Sie einen Linux-Shell-Befehl / ein Skript im Hintergrund aus

Googler – Führen Sie Google-Suchen über die Befehlszeile aus

Wie führe ich einen Befehl in einem Shell-Skript aus?

Umgehen des in /etc/passwd angegebenen Befehls/Skripts

So führen Sie TeX über die Befehlszeilenschnittstelle in Linux aus

Führen Sie ein Shell-Skript als ein anderer Benutzer aus