Python 如何停止docker数据库容器

Python 如何停止docker数据库容器,python,django,docker,nginx,gunicorn,Python,Django,Docker,Nginx,Gunicorn,正在尝试运行以下docker compose文件 version: '3' services: database: image: postgres container_name: pg_container environment: POSTGRES_USER: partman POSTGRES_PASSWORD: partman POSTGRES_DB: partman app: build: . cont

正在尝试运行以下docker compose文件

version: '3'

services:
  database:
    image: postgres
    container_name: pg_container
    environment:
      POSTGRES_USER: partman
      POSTGRES_PASSWORD: partman
      POSTGRES_DB: partman


  app:
    build: .
    container_name: partman_container
    links:
     - database
    environment:
     - DB_NAME=partman
     - DB_USER=partman
     - DB_PASSWORD=partman
     - DB_HOST=database
     - DB_PORT=5432
     - SECRET_KEY='=321t+92_)@%_4b+f-&0ym(fs2p5-0-_nz5mhb_cak9zlo!bv@'
    depends_on:
      - database

    expose:
      - "8000"
      - "8020"

    ports:
       - "127.0.0.1:8020:8020"

volumes:
  pgdata: {}
运行docker compose up build时,请使用以下docker文件

# Dockerfile

# FROM directive instructing base image to build upon
FROM python:3.7-buster


RUN apt-get update && apt-get install nginx vim -y --no-install-recommends
COPY nginx.default /etc/nginx/sites-available/default
RUN ln -sf /dev/stdout /var/log/nginx/access.log \
    && ln -sf /dev/stderr /var/log/nginx/error.log


RUN mkdir .pip_cache \
 mkdir -p /opt/app \
 mkdir -p /opt/app/pip_cache \
 mkdir -p /opt/app/py-partman

COPY start-server.sh /opt/app/
COPY requirements.txt start-server.sh /opt/app/
COPY .pip_cache /opt/app/pip_cache/
COPY partman /opt/app/py-partman/

WORKDIR /opt/app
RUN pip install -r requirements.txt --cache-dir /opt/app/pip_cache
RUN chown -R www-data:www-data /opt/app 
RUN /bin/bash -c 'ls -la; chmod +x /opt/app/start-server.sh; ls -la'

EXPOSE 8020
STOPSIGNAL SIGTERM

CMD ["/opt/app/start-server.sh"]

/opt/app/start-server.sh:

#!/usr/bin/env bash
# start-server.sh
ls
pwd

cd py-partman
ls
pwd
python manage.py createsuperuser --no-input
python manage.py makemigrations
python manage.py migrate
python manage.py initialize_entities
数据库映像继续运行,我想停止它,因为否则jenkins作业将继续等待映像终止


有什么好主意/更好的主意怎么做

可能与->码头工人站

如果无法停止,请使用-f强制。
试试看。

也许可以使用->docker stop

如果无法停止,请使用-f强制。
试试看。

Docker Compose通常面向长时间运行的服务器类型进程,如果数据库容器通常需要30-60秒才能启动,那么不重复它们通常是有益的。(事实上,您显示的工件看起来有点奇怪,因为没有包含
python manage.py runserver
命令。)

看起来你要找的东西有一个选择

docker-compose up --build --abort-on-container-exit
如果您想更手动地执行此操作,特别是如果您的
应用程序
容器的正常行为是实际启动服务器,则可以使用初始化命令。这将启动容器及其依赖项,但它也希望其命令返回,然后您可以自行清理

docker-compose build
docker-compose run app /opt/app/initialize-only.sh
docker-compose down -v

Docker Compose通常面向长时间运行的服务器类型进程,如果数据库容器经常需要30-60秒才能启动,那么不重复它们通常是有益的。(事实上,您显示的工件看起来有点奇怪,因为没有包含
python manage.py runserver
命令。)

看起来你要找的东西有一个选择

docker-compose up --build --abort-on-container-exit
如果您想更手动地执行此操作,特别是如果您的
应用程序
容器的正常行为是实际启动服务器,则可以使用初始化命令。这将启动容器及其依赖项,但它也希望其命令返回,然后您可以自行清理

docker-compose build
docker-compose run app /opt/app/initialize-only.sh
docker-compose down -v

Docker stop Docker stop无法解决此问题,因为我们希望映像在自己完成构建后立即终止。也许您可以创建一个bin/setup脚本,并在创建Docker映像后初始化它,而不是在Docker文件上执行CMD[“/opt/app/start server.sh”,手动执行。这无法解决问题,因为我们希望映像在完成自身构建后立即终止。也许您可以创建一个bin/setup脚本,并在创建docker映像后初始化它,而不是在dockerfile上执行CMD[“/opt/app/start server.sh”,手动执行。我共享的命令使用gunicorn启动服务,它从进程中派生工作进程,我希望映像在生成后停止,但我认为数据库阻止它终止我共享的命令使用gunicorn启动服务,它从进程中派生工作进程,我希望映像在生成后停止,但我认为数据库正在阻止它终止