在我的项目中,我有一个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
现在,我将仅使用Dockerfile而非docker compose将dockerized应用构建为映像。 我需要一种使用docker文件来创建postgres db映像的方法,就像我对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
如何从Dockerfile创建和启动postgres db容器?
非常感谢
答案 0 :(得分:0)
如果要避免使用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
然后您可以像这样启动docker:
make run
Makefile很不错,因为您可以存储所有特定的配置(如提到的卷挂载),但是与docker-compose :-)相比,它们同时感觉放错了位置