【发布时间】:2022-12-24 04:55:39
【问题描述】:
总的来说,我对开发人员,尤其是 Docker 领域,尤其是 Rails 还比较陌生,如果这听起来像是一个愚蠢的问题,请提前致歉。
在 Docker Compose 的帮助下,我试图在由 4 个服务(2 个网站和 2 个 API)+ Postgresql 组成的 monorepo 中运行一个应用程序。最终目标是使用 Traefik 在 VPS 上运行它(一旦我让当前应用程序在本地运行)。
以下是不同的服务:
-
Postgres(通过 Dockerhub 中可用的 Postgres 图像)
-
B2C 网站 (NextJS)
-
管理网站(React with create Vite)
-
API(Rails)。它应该链接到 Postgres 数据库
-
一个 Strapi API(用于 B2C 网站的内容)。 Strapi 有自己的 SQLite 数据库。只有 B2C 网站需要来自 Strapi 的数据。
当我运行码头工人组成-d命令,它似乎正在工作(见下图)
但是当我访问其中一个网站时(除了似乎正常工作的 Strapi)(https://localhost:3009,或 3008 或 3001),我什么也得不到(见下文)。
但是,我没有在任何应用程序的日志中看到任何错误。例如下面的 Rails API 日志:
我假设我的配置有错误,尤其是在 Rails api 的 database.yml 配置和 docker-compose.yml 文件中。
数据库.yml:
default: &default
adapter: postgresql
encoding: unicode
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
host: pg
development:
<<: *default
database: chana_api_v2_development
test:
<<: *default
database: chana_api_v2_test
production:
<<: *default
database: chana_api_v2_production
username: chana
password: <%= ENV["CHANA_DATABASE_PASSWORD"] %>
docker-compose.yml
version: '3'
services:
# ----------------POSTGRES -----------------
pg:
image: postgres:14.6
container_name: pg
networks:
- chana_postgres_network
ports:
- "5432:5432"
environment:
POSTGRES_DB: chana_development
POSTGRES_USER: chana
POSTGRES_PASSWORD: chana
volumes:
- ./data:/var/lib/postgresql/data
# ----------------- RAILS API -----------------
api:
build: ./api
container_name: api
networks:
- chana_postgres_network
- api_network
volumes:
- ./api:/chana_api
ports:
- "3001:3000"
depends_on:
- pg
# ----------------- STRAPI -----------------
strapi:
build:
context: ./strapi
args:
BASE_VERSION: latest
STRAPI_VERSION: 4.5.0
container_name: chana-strapi
restart: unless-stopped
env_file: .env
environment:
NODE_ENV: ${NODE_ENV}
HOST: ${HOST}
PORT: ${PORT}
volumes:
- ./strapi:/srv/app
- strapi_node_modules:/srv/app/node_modules
ports:
- "1337:1337"
# ----------------- B2C website -----------------
public-front:
build: ./public-front
container_name: public-front
restart: always
command: yarn dev
ports:
- "3009:3000"
networks:
- api_network
- chana_postgres_network
depends_on:
- api
- strapi
volumes:
- ./public-front:/app
- /app/node_modules
- /app/.next
# ----------------- ADMIN website -----------------
admin-front:
build: ./admin-front
container_name: admin-front
restart: always
command: yarn dev
ports:
- "3008:3000"
networks:
- api_network
- chana_postgres_network
depends_on:
- api
volumes:
- ./admin-front:/app
- /app/node_modules
- /app/.next
volumes:
strapi_node_modules:
networks:
api_network:
chana_postgres_network:
您知道为什么我在网站页面上看不到任何内容吗?
我尝试更改相关的不同文件的代码,尤其是 database.yml、docker-compose.yml 和每个应用程序的 dockerfiles。
此外,我尝试使用以下命令查看 api 容器(Rails)docker exec -it api /bin/sh通过 Rails 控制台检查数据库,我收到以下错误消息:
activeRecord::ConnectionNotEstablished 无法连接到服务器:没有这样的文件或目录。服务器是否在本地运行并接受 Unix 域套接字“/var/run/postgresql/.s.PGSQL.5432”上的连接?
【问题讨论】:
标签: ruby-on-rails postgresql docker docker-compose