Docker compose: Error: role "hleb" does not exist
Docker compose: Error: role "hleb" does not exist
请您帮忙 docker 和 Postgres。
我有一个本地 Postgres 数据库和一个 NestJS 项目。
我杀了5432端口
我的 Dockerfile
FROM node:16.13.1
WORKDIR /app
COPY package.json ./
COPY yarn.lock ./
RUN yarn install
COPY . .
COPY ./dist ./dist
CMD ["yarn", "start:dev"]
- 我的docker-compose.yml
version: '3.0'
services:
main:
container_name: main
build:
context: .
env_file:
- .env
volumes:
- .:/app
- /app/node_modules
ports:
- 4000:4000
- 9229:9229
command: yarn start:dev
depends_on:
- postgres
restart: always
postgres:
container_name: postgres
image: postgres:12
env_file:
- .env
environment:
PG_DATA: /var/lib/postgresql/data
POSTGRES_HOST_AUTH_METHOD: 'trust'
ports:
- 5432:5432
volumes:
- pgdata:/var/lib/postgresql/data
restart: always
volumes:
pgdata:
- .env
DB_TYPE=postgres
DB_HOST=postgres
DB_PORT=5432
DB_USERNAME=hleb
DB_NAME=artwine
DB_PASSWORD=Mypassword
运行 sudo docker-compose build - 没有错误
运行 sudo docker-compose up --force-recreate - 错误
错误 [ExceptionHandler] 角色“hleb”不存在。
我尝试了针对现有问题的多种建议,但没有任何帮助。
我究竟做错了什么?
谢谢!
- 不要使用
sudo
- 除非你必须这样做。
- 尽可能使用最新的 Postgres 版本。
Postgresql Docker Image 提供了一些环境变量,可帮助您启动数据库。
注意:
The PostgreSQL image uses several environment variables which are easy to miss. The only variable required is POSTGRES_PASSWORD, the rest are optional.
Warning: the Docker specific variables will only have an effect if you start the container with a data directory that is empty; any pre-existing database will be left untouched on container startup.
当你在docker-compose.yml文件中没有提供POSTGRES_USER
环境变量时,它会默认为postgres
.
您用于 Docker Compose 的 .env 文件不包含 docker 特定环境变量。
所以amending/extending它到:
POSTGRES_USER=hleb
POSTGRES_DB=artwine
POSTGRES_PASSWORD=Mypassword
应该可以解决问题。如果数据目录已经存在,您将必须 re-create 卷(删除它)才能使它工作。
请您帮忙 docker 和 Postgres。
我有一个本地 Postgres 数据库和一个 NestJS 项目。
我杀了5432端口
我的 Dockerfile
FROM node:16.13.1
WORKDIR /app
COPY package.json ./
COPY yarn.lock ./
RUN yarn install
COPY . .
COPY ./dist ./dist
CMD ["yarn", "start:dev"]
- 我的docker-compose.yml
version: '3.0'
services:
main:
container_name: main
build:
context: .
env_file:
- .env
volumes:
- .:/app
- /app/node_modules
ports:
- 4000:4000
- 9229:9229
command: yarn start:dev
depends_on:
- postgres
restart: always
postgres:
container_name: postgres
image: postgres:12
env_file:
- .env
environment:
PG_DATA: /var/lib/postgresql/data
POSTGRES_HOST_AUTH_METHOD: 'trust'
ports:
- 5432:5432
volumes:
- pgdata:/var/lib/postgresql/data
restart: always
volumes:
pgdata:
- .env
DB_TYPE=postgres
DB_HOST=postgres
DB_PORT=5432
DB_USERNAME=hleb
DB_NAME=artwine
DB_PASSWORD=Mypassword
运行 sudo docker-compose build - 没有错误
运行 sudo docker-compose up --force-recreate - 错误
错误 [ExceptionHandler] 角色“hleb”不存在。
我尝试了针对现有问题的多种建议,但没有任何帮助。 我究竟做错了什么? 谢谢!
- 不要使用
sudo
- 除非你必须这样做。 - 尽可能使用最新的 Postgres 版本。
Postgresql Docker Image 提供了一些环境变量,可帮助您启动数据库。
注意:
The PostgreSQL image uses several environment variables which are easy to miss. The only variable required is POSTGRES_PASSWORD, the rest are optional.
Warning: the Docker specific variables will only have an effect if you start the container with a data directory that is empty; any pre-existing database will be left untouched on container startup.
当你在docker-compose.yml文件中没有提供POSTGRES_USER
环境变量时,它会默认为postgres
.
您用于 Docker Compose 的 .env 文件不包含 docker 特定环境变量。
所以amending/extending它到:
POSTGRES_USER=hleb
POSTGRES_DB=artwine
POSTGRES_PASSWORD=Mypassword
应该可以解决问题。如果数据目录已经存在,您将必须 re-create 卷(删除它)才能使它工作。