Docker:TCP/IP 端口 5342 上的连接?连接到服务器:连接被拒绝是主机上的服务器 运行
Docker: TCP/IP connections on port 5342? connect to server: Connection refused Is the server running on host
我正在使用 rails 3.0.0 和 rails 7.
我的 docker 文件如下:
FROM ruby:3.0.0-alpine
RUN apk add --update --virtual \
runtime-deps \
postgresql-client\
build-base \
libxml2-dev \
libxslt-dev \
yarn \
libffi-dev \
readline \
build-base \
postgresql-dev \
libc-dev \
linux-headers \
readline-dev \
file \
imagemagick \
git \
tzdata \
&& rm -rf /var/cache/apk*
WORKDIR /app
COPY . /app/
ENV BUNDLE_PATH /gems
RUN yarn install
RUN bundle install
ENTRYPOINT ["bin/rails"]
CMD ["s", "-b", "0.0.0.0"]
EXPOSE 3000
docker-compose.yml 为:
version: '3.8'
services:
db:
image: postgres:latest
environment:
- POSTGRES_PASSWORD=password
ports:
- "5433:5432"
volumes:
- "dbdata:/var/lib/postgresql/data"
redis:
image: redis:latest
ports:
- "6380:6379"
web:
build: .
ports:
- "3000:3000"
depends_on:
- db
- redis
environment:
- DATABASE_URL=postgres://postgres:password@db:5433/postgres
- REDIS_URL=redis://redis:6380
volumes:
- .:/app
volumes:
dbdata:
database.yml 文件如下:
default: &default
adapter: postgresql
encoding: unicode
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
port: 5432
development:
<<: *default
database: my_app_development
username: postgres
password: password
test:
<<: *default
database: my_app_test
# production:
# url: <%= ENV["MY_APP_DATABASE_URL"] %>
production:
<<: *default
database: my_app_production
username: my_app
password: <%= ENV["MY_APP_DATABASE_PASSWORD"] %>
使用 ubunut 20.04 LTS。
得到错误为:
ActiveRecord::ConnectionNotEstablished
无法连接到服务器:连接被拒绝
主机“172.22.0.3”上的服务器 运行 是否接受
TCP/IP 端口 5433 上的连接?
如何解决这个问题,任何建议都会有所帮助,在此先感谢。
您的 web
服务正在使用内部 docker 网络与 db
(postgresql) 服务连接;这样做时,它直接连接到容器的 IP 地址,容器(对于 postgresql)正在侦听端口 5432
。通过 docker 网络的连接不需要发布/公开端口,因此 5433:5432
port-mapping 不用于该目的。
我应该补充一点,您的撰写文件正在发布(port-mapping)db
和 redis
服务;发布它们意味着它们可以在主机的网络接口上公开访问(如果您不在内部网络上,可能可以在互联网上公开访问)。
确保仅为必须可公开访问(或通过其他方式受到保护)的服务发布端口;如上所述,容器/服务之间的连接 不需要 需要发布这些端口。
根据上述共享建议得出解决方案:
docker-compose.yml
version: '3.8'
services:
db:
image: postgres:latest
environment:
POSTGRES_PASSWORD: password
command: -p 5000
ports: "5000:5432"
volumes:
- "dbdata:/var/lib/postgresql/data"
redis:
image: redis:latest
ports:
- "6380:6379"
web:
build: .
ports:
- "3000:3000"
depends_on:
- db
- redis
environment:
- DATABASE_URL=postgres://postgres:password@db:5432/postgres
- REDIS_URL=redis://redis:6379
volumes:
- .:/app
volumes:
dbdata:
database.yml:
default: &default
adapter: postgresql
encoding: unicode
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
development:
<<: *default
database: my_app_development
username: postgres
password: password
test:
<<: *default
database: my_app_test
# production:
# url: <%= ENV["MY_APP_DATABASE_URL"] %>
production:
<<: *default
database: my_app_production
username: my_app
password: <%= ENV["MY_APP_DATABASE_PASSWORD"] %>
Dockerfile:
FROM ruby:3.0.0-alpine
RUN apk add --update --virtual \
runtime-deps \
postgresql-client\
build-base \
libxml2-dev \
libxslt-dev \
yarn \
libffi-dev \
readline \
build-base \
postgresql-dev \
libc-dev \
linux-headers \
readline-dev \
file \
imagemagick \
git \
tzdata \
&& rm -rf /var/cache/apk*
WORKDIR /app
COPY . /app/
ENV BUNDLE_PATH /gems
RUN yarn install
RUN bundle install
ENTRYPOINT ["bin/rails"]
CMD ["s", "-b", "0.0.0.0"]
EXPOSE 3000
现在有了这些配置 rails 应用 运行。
请更新如何做得更好,谢谢。
我正在使用 rails 3.0.0 和 rails 7.
我的 docker 文件如下:
FROM ruby:3.0.0-alpine
RUN apk add --update --virtual \
runtime-deps \
postgresql-client\
build-base \
libxml2-dev \
libxslt-dev \
yarn \
libffi-dev \
readline \
build-base \
postgresql-dev \
libc-dev \
linux-headers \
readline-dev \
file \
imagemagick \
git \
tzdata \
&& rm -rf /var/cache/apk*
WORKDIR /app
COPY . /app/
ENV BUNDLE_PATH /gems
RUN yarn install
RUN bundle install
ENTRYPOINT ["bin/rails"]
CMD ["s", "-b", "0.0.0.0"]
EXPOSE 3000
docker-compose.yml 为:
version: '3.8'
services:
db:
image: postgres:latest
environment:
- POSTGRES_PASSWORD=password
ports:
- "5433:5432"
volumes:
- "dbdata:/var/lib/postgresql/data"
redis:
image: redis:latest
ports:
- "6380:6379"
web:
build: .
ports:
- "3000:3000"
depends_on:
- db
- redis
environment:
- DATABASE_URL=postgres://postgres:password@db:5433/postgres
- REDIS_URL=redis://redis:6380
volumes:
- .:/app
volumes:
dbdata:
database.yml 文件如下:
default: &default
adapter: postgresql
encoding: unicode
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
port: 5432
development:
<<: *default
database: my_app_development
username: postgres
password: password
test:
<<: *default
database: my_app_test
# production:
# url: <%= ENV["MY_APP_DATABASE_URL"] %>
production:
<<: *default
database: my_app_production
username: my_app
password: <%= ENV["MY_APP_DATABASE_PASSWORD"] %>
使用 ubunut 20.04 LTS。 得到错误为: ActiveRecord::ConnectionNotEstablished 无法连接到服务器:连接被拒绝 主机“172.22.0.3”上的服务器 运行 是否接受 TCP/IP 端口 5433 上的连接?
如何解决这个问题,任何建议都会有所帮助,在此先感谢。
您的 web
服务正在使用内部 docker 网络与 db
(postgresql) 服务连接;这样做时,它直接连接到容器的 IP 地址,容器(对于 postgresql)正在侦听端口 5432
。通过 docker 网络的连接不需要发布/公开端口,因此 5433:5432
port-mapping 不用于该目的。
我应该补充一点,您的撰写文件正在发布(port-mapping)db
和 redis
服务;发布它们意味着它们可以在主机的网络接口上公开访问(如果您不在内部网络上,可能可以在互联网上公开访问)。
确保仅为必须可公开访问(或通过其他方式受到保护)的服务发布端口;如上所述,容器/服务之间的连接 不需要 需要发布这些端口。
根据上述共享建议得出解决方案:
docker-compose.yml
version: '3.8'
services:
db:
image: postgres:latest
environment:
POSTGRES_PASSWORD: password
command: -p 5000
ports: "5000:5432"
volumes:
- "dbdata:/var/lib/postgresql/data"
redis:
image: redis:latest
ports:
- "6380:6379"
web:
build: .
ports:
- "3000:3000"
depends_on:
- db
- redis
environment:
- DATABASE_URL=postgres://postgres:password@db:5432/postgres
- REDIS_URL=redis://redis:6379
volumes:
- .:/app
volumes:
dbdata:
database.yml:
default: &default
adapter: postgresql
encoding: unicode
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
development:
<<: *default
database: my_app_development
username: postgres
password: password
test:
<<: *default
database: my_app_test
# production:
# url: <%= ENV["MY_APP_DATABASE_URL"] %>
production:
<<: *default
database: my_app_production
username: my_app
password: <%= ENV["MY_APP_DATABASE_PASSWORD"] %>
Dockerfile:
FROM ruby:3.0.0-alpine
RUN apk add --update --virtual \
runtime-deps \
postgresql-client\
build-base \
libxml2-dev \
libxslt-dev \
yarn \
libffi-dev \
readline \
build-base \
postgresql-dev \
libc-dev \
linux-headers \
readline-dev \
file \
imagemagick \
git \
tzdata \
&& rm -rf /var/cache/apk*
WORKDIR /app
COPY . /app/
ENV BUNDLE_PATH /gems
RUN yarn install
RUN bundle install
ENTRYPOINT ["bin/rails"]
CMD ["s", "-b", "0.0.0.0"]
EXPOSE 3000
现在有了这些配置 rails 应用 运行。 请更新如何做得更好,谢谢。