GNU/Linux >> Linux Esercitazione >  >> Linux

Esegui uno script di shell dal comando docker-compose, all'interno del contenitore

Per prima cosa, stai copiando entrypoint.sh a $APP che hai passato dai tuoi argomenti di build ma non l'hai menzionato e la seconda cosa è che devi impostare l'autorizzazione per entrypoint.sh . È meglio aggiungere queste tre righe in modo da non dover aggiungere command nel file docker-compose.

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 per api sarà

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

oppure puoi usare anche il tuo funzionerà bene

version: "2"

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

Ora puoi controllare anche con il comando docker run.

docker run -it --rm myapp


Linux
  1. Perché "sudo Su" in uno script di shell non esegue il resto dello script come root?

  2. Come eseguire un comando all'interno di un contenitore Systemd in esecuzione?

  3. Da dove viene eseguito uno script di shell?

  4. Il significato di $? In uno script di shell?

  5. Come eseguire script Python dalla shell

Come eseguire il comando / script della shell di Linux in background

Googler:esegui ricerche su Google dalla riga di comando

Come eseguire un comando in uno script della shell?

Esegui uno script di shell nel nuovo terminale dal terminale corrente

Come eseguire TeX dall'interfaccia della riga di comando in Linux

Eseguire uno script di shell come utente diverso