Создайте базу данных postgres в моем Dockerfile - PullRequest
0 голосов
/ 23 октября 2019

в моем проекте у меня есть файл docker-compose.yml, подобный следующему:

version: '3'

networks:
  mynetwork:
    driver: bridge

services:

  postgres:
    restart: always
    image: postgres:11
    ports:
      - "5432:5432"
    healthcheck:
        test: ["CMD", "curl", "-f", "http://localhost:5432"]
        interval: 30s
        timeout: 10s
        retries: 5
    volumes:
      - ./data:/var/lib/postgresql/data

  web:
    build: .
    image: <myrepo>/<mypath>
    command: python /Code/core/manage.py runserver 0.0.0.0:8000
    networks:
      - mynetwork

    ports:
      - "8000:8000"

    depends_on:
      - postgres

Теперь я хотел бы построить приложение dockerized как изображение, используя только Dockerfile вместо docker compose. Мне нужен способ для создания образа postgres db с использованием моего файла docker, как я делал с docker-compose.

Мой настоящий файл dockerfile:

FROM python:3.6-alpine
RUN apk add --no-cache make linux-headers libffi-dev jpeg-dev zlib-dev
RUN apk update && apk add postgresql-dev gcc python3-dev musl-dev
#RUN apk update && apk add build-essential libssl-dev libffi-dev
RUN mkdir /Code
WORKDIR /Code
COPY ./requirements.txt .

RUN pip install --upgrade pip
RUN pip install -r requirements.txt
ENV PYTHONUNBUFFERED 1

COPY . /Code/

ENTRYPOINT python /Code/core/manage.py runserver 0.0.0.0:8000

Как я могу создать и запустить postgresконтейнер БД из Dockerfile?

Огромное спасибо заранее

1 Ответ

0 голосов
/ 23 октября 2019

Если вы хотите избежать использования docker-compose, вы можете запустить postgres контейнер без выделенного Dockerfile.

Просто запустите:

docker pull postgres:11
docker run -it -rm postgres:11

Вы можете указать тома в команде docker runесли вам нужна настойчивость.

Вы можете автоматизировать это, используя Makefile, если вы поместите что-то подобное в Makefile:

run:
    docker pull postgres:11 && \
    docker run -it -rm \
        --mount type=bind,source=/path/to/your/local/postgres/data,target=/var/lib/postgresql \
        -e POSTGRES_PASSWORD='secret' \
        postgres:11

Тогда вы можете запустить свой докер следующим образом:

make run

Make-файлы хороши тем, что вы можете хранить всю вашу конкретную конфигурацию (например, упомянутые монтируемые тома), но в то же время они немного неуместны по сравнению с docker-compose: -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...