首先,Dockerfile中的每个RUN命令都在单独的外壳中运行,RUN
命令应用于starting
进程的安装或配置。该过程应从CMD
或entrypoint
开始。
RUN vs CMD
最好使用官方postgress docker image。
docker run --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -d postgres
默认的postgres用户和数据库是在initdb的入口点中创建的。
或者您也可以基于Postgress建立图像。
FROM postgres:11
ENV POSTGRES_USER=kong
ENV POSTGRES_PASSWORD=example
COPY seed.sql /docker-entrypoint-initdb.d/seed.sql
这将创建一个带有用户名,密码的图像,并且入口点还将在容器启动时插入种子数据。
POSTGRES_USER
此可选环境变量与
POSTGRES_PASSWORD设置用户及其密码。此变量将
使用超级用户权限创建指定的用户,并使用
一样的名字。如果未指定,则为postgres的默认用户
将被使用。
官方docker映像的一些优势
- 从ENV创建数据库
- 从ENV创建数据库用户
- 从种子数据开始容器
- 将等待postgres启动并运行
所有你需要的
# Use postgres/example user/password credentials
version: '3.1'
services:
db:
image: postgres
restart: always
environment:
POSTGRES_PASSWORD: example
初始化脚本
如果您想对派生的图像进行其他初始化
在这一项中,在下面添加一个或多个*.sql,*.sql.gz,or *.sh
脚本
/docker-entrypoint-initdb.d
(必要时创建目录)。
在入口点调用initdb之后,创建默认的postgres用户
和数据库,它将运行任何*.sql
文件,运行任何可执行文件* .sh
脚本,并在其中找到任何不可执行的*.sh
脚本
目录以在启动服务之前进行进一步的初始化。
本文链接:https://www.f2er.com/3155048.html