Python 如何停止docker数据库容器
正在尝试运行以下docker compose文件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
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启动服务,它从进程中派生工作进程,我希望映像在生成后停止,但我认为数据库正在阻止它终止