首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Docker-Compose +命令

Docker-Compose +命令
EN

Stack Overflow用户
提问于 2018-10-23 06:21:12
回答 2查看 15.5K关注 0票数 3

我的docker-compose命令似乎只执行最后一个命令。在本例中为runserver。

代码语言:javascript
复制
command: python3 manage.py collectstatic --noinput
command: python3 manage.py migrate --noinput
command: python3 manage.py runserver 0.0.0.0:8000

我尝试将这些命令移动到一个entrypoint.sh文件中。然而,我不知道如何在我的dockerfile & docker-compose中实现它。

下面是我的dockerfile:

代码语言:javascript
复制
# Pull base image
FROM python:3

# Set environment varibles
ENV PYTHONUNBUFFERED 1

# Set work directory
RUN mkdir /code
WORKDIR /code

# Install dependencies
RUN pip install --upgrade pip
RUN pip install pipenv
COPY ./Pipfile /code/Pipfile
RUN pipenv install --deploy --system --skip-lock --dev

# Copy project
COPY . /code/

我的docker-compose:

代码语言:javascript
复制
version: '3'

services:
  db:
    image: postgres
    ports:
      - "5432:5432"
  web:
    build: .
    command: python3 manage.py collectstatic --noinput
    command: python3 manage.py migrate --noinput
    command: python3 manage.py runserver 0.0.0.0:8000
    env_file: .env
    volumes:
      - .:/code
    ports:
      - "8000:8000"
    depends_on:
      - db

entrypoint.sh

代码语言:javascript
复制
#!/bin/bash

# Collect static files
echo "Collect static files"
python manage.py collectstatic --noinput

# Apply database migrations
echo "Apply database migrations"
python manage.py migrate

# Start server
echo "Starting server"
python manage.py runserver 0.0.0.0:8000
EN

回答 2

Stack Overflow用户

发布于 2018-10-23 06:23:50

这是因为您只能有一个command

您可以组合多个命令,如下所示:

代码语言:javascript
复制
command: sh -c "python3 manage.py collectstatic --noinput && python3 manage.py migrate --noinput && python3 manage.py runserver 0.0.0.0:8000"

或者,正如您提到的入口点,您可以在Dockerfiledocker-compose.yml中指定入口点。确保删除这些命令,因为您不再需要它们。

这里有一篇关于入口点vs命令vs运行的好文章:http://goinbigdata.com/docker-run-vs-cmd-vs-entrypoint/

票数 10
EN

Stack Overflow用户

发布于 2021-06-06 03:57:13

或者,对于Michael的回答,您可以使用文档中指出的包装器语法。

代码语言:javascript
复制
version: "2"
services:
  web:
    build: .
    ports:
      - "80:8000"
    depends_on:
      - "db"
    command: ["./wait-for-it.sh", "db:5432", "--", "python", "app.py"]
  db:
    image: postgres

更多信息:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52938508

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档