GNU/Linux >> Znalost Linux >  >> Linux

Spusťte skript prostředí z příkazu docker-compose uvnitř kontejneru

Za prvé, kopírujete entrypoint.sh$APP které jste předali z vašich argumentů sestavení, ale nezmínili jste se o tom a druhá věc, kterou musíte nastavit oprávnění pro entrypoint.sh . Je lepší přidat tyto tři řádky, abyste nemuseli přidávat command v souboru 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 for api bude

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

nebo můžete použít svůj vlastní také bude fungovat dobře

version: "2"

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

Nyní to můžete zkontrolovat také pomocí příkazu docker run.

docker run -it --rm myapp


Linux
  1. Proč „sudo Su“ ve skriptu Shell nespustí zbytek skriptu jako kořen?

  2. Odkud se spouští skript Shell?

  3. Význam $? Ve skriptu Shell?

  1. Jak spouštět skripty Pythonu ze shellu

  2. Paralelní spuštění skriptu shellu

  3. Bash skript:Použití příkazu script z bash skriptu pro protokolování relace

  1. Jak spustit příkaz uvnitř spuštěného kontejneru Systemd?

  2. Jak nainstaluji skript pro spuštění kdekoli z příkazového řádku?

  3. Vynechání příkazu/skriptu zadaného v /etc/passwd