[英]Splitting up a Rails and React app into separate Docker containers?
[英]Localhost not found even if my docker containers are up?
总的来说,我对开发人员,尤其是 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 的数据。
当我运行docker compose up -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。
此外,我尝试使用命令docker exec -it api /bin/sh查看 api 容器 (Rails),以通过 Rails 控制台检查数据库,但我收到以下错误消息:
activeRecord::ConnectionNotEstablished 无法连接到服务器:没有这样的文件或目录。 服务器是否在本地运行并接受 Unix 域套接字“/var/run/postgresql/.s.PGSQL.5432”上的连接?
而不是 localhost 按 ctrl 并单击它传递的 url 有时不会在您网站的 localhost 端口上打开
看起来你在 docker 中的主机通常是127.0.0.1:3000
这很好但是在 docker 中当你想将应用程序暴露给你的主机时你需要将应用程序更改为在0.0.0.0:3000
上运行然后 docker 将能够将应用程序传递到您的主机。 如果没有特定的 Dockerfile,这是我能做的最好的。 我之前在 strapi 和其他一些应用程序中遇到过这个问题,希望它能有所帮助。 如果我不清楚,它仍然是主机上的localhost:3000
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.