gpt4 book ai didi

postgresql - Postgres初始化脚本不起作用Docker 3.4版

转载 作者:行者123 更新时间:2023-12-02 18:35:00 34 4
gpt4 key购买 nike

尝试对应用程序进行docker化,在我的应用程序中,我有以下内容

docker-compose.yml

version: '3.4'

services:
app:
build:
context: .
dockerfile: Dockerfile
depends_on:
- database
ports:
- "3000:3000"
volumes:
- .:/app
- gem_cache:/usr/local/bundle/gems
env_file: .env
environment:
RAILS_ENV: development

database:
image: postgres:10.12
volumes:
- ./init.sql/:/docker-entrypoint-initdb.d/init.sql
- db_data:/var/lib/postgresql/data

volumes:
gem_cache:
db_data:

在我的init.sql文件中
CREATE USER user1 WITH PASSWORD 'password';
ALTER USER user1 WITH SUPERUSER;

我已经运行了 chmod +x init.sql
在我的.env文件中,我有以下内容
DATABASE_NAME=tools_development
DATABASE_USER=user1
DATABASE_PASSWORD=password
DATABASE_HOST=database

这是我的Dockerfile
FROM ruby:2.7.0

ENV BUNDLER_VERSION=2.1.4

RUN apt-get -y update --fix-missing


RUN apt-get install -y bash git build-essential nodejs libxml2-dev openssh-server libssl-dev libreadline-dev zlib1g-dev postgresql-client libcurl4-openssl-dev libxml2-dev libpq-dev tzdata

RUN gem install bundler -v 2.1.4

WORKDIR /app

COPY Gemfile Gemfile.lock ./

RUN bundle check || bundle install

COPY . ./

ENTRYPOINT ["./entrypoint.sh"]

但是每次我运行 docker-compose run --build并尝试运行我的应用程序时。我收到错误消息:
could not translate host name "database" to address: Name or service not known
我已经尝试了所有可能的方法,但是仍然存在相同的错误。

是否有人对如何解决此问题有任何想法?

我知道问题正在发生,因为postgres初始化脚本未运行。我在网上看到了很多选择,并且尝试了所有方法,但仍然遇到相同的错误。

任何帮助表示赞赏

谢谢

最佳答案

postgres docker image documentation中,您可以看到POSTGRES_USERPOSTGRES_PASSWORD是设置postgres容器的必要环境变量

您可以将这些环境变量添加到.env文件中。因此该文件将如下所示:

.env

DATABASE_NAME=tools_development
DATABASE_USER=user1
DATABASE_PASSWORD=password
DATABASE_HOST=database

POSTGRES_USER=user1
POSTGRES_PASSWORD=password
POSTGRES_DB=tools_development

这些环境变量将从postgres容器中用于初始化数据库并分配用户,因此您可以摆脱 init.sql文件

之后,您需要在database(postgres:10.12)服务中添加 .env文件的引用。
因此,您的docker compose文件应如下所示:

docker-compose.yml

...
database:
image: postgres:10.12
volumes:
- db_data:/var/lib/postgresql/data
env_file: .env
...

关于postgresql - Postgres初始化脚本不起作用Docker 3.4版,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60900619/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com