我正在嘗試 dockerize 我的 Ruby on Rails API,命令“docker-compose ps”的輸出是這樣的:

由于容器已啟動,我嘗試使用此命令“docker-compose exec app bundle exec rails db:setup db:migrate”遷移我的資料庫,我得到的輸出是這樣的:

關于我的組態檔,這是我的 Dockerfile:
FROM ruby:2.7.0-alpine
ENV BUNDLER_VERSION=2.1.2
RUN apk add --update --no-cache \
binutils-gold \
build-base \
curl \
file \
g \
gcc \
git \
less \
libstdc \
libffi-dev \
libc-dev \
linux-headers \
libxml2-dev \
libxslt-dev \
libgcrypt-dev \
make \
netcat-openbsd \
nodejs \
openssl \
pkgconfig \
postgresql-dev \
python \
tzdata \
yarn
RUN gem install bundler -v 2.1.2
WORKDIR /app
COPY Gemfile Gemfile.lock ./
RUN bundle config build.nokogiri --use-system-libraries
RUN bundle check || bundle install
#COPY package.json yarn.lock ./
RUN yarn install --check-files
COPY . ./
ENTRYPOINT ["./entrypoints/docker-entrypoint.sh"]
這是我的 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
- node_modules:/app/node_modules
env_file: .env
environment:
RAILS_ENV: production
networks:
- letsorder
database:
image: postgres:13.7
env_file:
- ./.env
volumes:
- db_data:/var/lib/postgresql/data
- ./init.sql:/docker-entrypoint-initdb.d/init.sql
networks:
- letsorder
volumes:
gem_cache:
db_data:
node_modules:
networks:
letsorder:
driver: bridge
所以,我搜索了這個問題,其中大多數導致在我的 docker-compose.yml 中設定了一個網路配接器,我做到了,但我得到了同樣的錯誤。
我想就如何除錯和解決此問題征求您的建議和意見;多謝。
uj5u.com熱心網友回復:
看起來在你的database.yml檔案中你有類似的東西
host: rorletsorderdatabase
但是在你的docker-compose.yml檔案中你有
database:
foo
一個可能的解決方法是更改database.yml??檔案中的主機
host: database
另一種選擇是更改docker-compose.yml檔案中的服務名稱
rorletsorderdatabase:
image: postgres:13.7
env_file:
- ./.env
volumes:
- db_data:/var/lib/postgresql/data
- ./init.sql:/docker-entrypoint-initdb.d/init.sql
networks:
- letsorder
同樣在任何情況下,都需要5432在里面的服務定義中暴露pg埠docker-compose.yml
ports:
- "5432:5432"
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/490085.html
標籤:轨道上的红宝石 PostgreSQL 码头工人 码头工人撰写
