我使用 AWS、Docker (docker-compose) 和 Rails 創建了一個基礎設施(應用程式)。
在 EC2 中啟動容器并啟動 rails 服務器后,我在訪問公共 IP 地址時收到“ERR_CONNECTION_REFUSED”。
我想知道如何顯示應用程式螢屏。
我的目錄結構如下:
kthr01/
docker-compose.yml
Dockerfile
start.sh
src/
app/
bin/
....
Dockerfile
FROM ruby:2.7
ENV RAILS_ENV=production
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \
&& echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list \
&& apt-get update -qq \
&& apt-get install -y nodejs yarn \
&& apt-get install -y vim
WORKDIR /app
COPY ./src /app
RUN bundle config --local set path 'vendor/bundle' \
&& bundle install
COPY start.sh /start.sh
RUN chmod 744 /start.sh
CMD ["sh", "/start.sh"]
碼頭工人-compose.yml
version: '3'
services:
db:
image: mysql:8.0
command: --default-authentication-plugin=mysql_native_password
volumes:
- ./src/db/mysql_data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: password
web:
build: .
command: bundle exec rails s -p 3000 -b '0.0.0.0'
volumes:
- ./src:/app
ports:
- "3000:3000"
depends_on:
- db
啟動.sh
#!/bin/sh
if [ "${RAILS_ENV}" = "production" ]
then
bundle exec rails assets:precompile
fi
bundle exec rails s -p ${PORT:-3000} -b 0.0.0.0
我有一個顯示 EC2 安全組設定的 AWS 控制臺螢屏截圖:

要運行這個:
驗證容器是否在本地環境中創建并正確顯示在 localhost:3000
↓
通過 ssh 連接到 EC2
↓
git clone
↓
docker-compose build
↓
docker-compose up
...
web_1 | => Booting Puma
web_1 | => Rails 6.1.4.4 application starting in production
web_1 | => Run `bin/rails server --help` for more startup options
web_1 | Puma starting in single mode...
web_1 | * Puma version: 5.6.1 (ruby 2.7.5-p203) ("Birdie's Version")
web_1 | * Min threads: 5
web_1 | * Max threads: 5
web_1 | * Environment: production
web_1 | * PID: 1
web_1 | * Listening on http://0.0.0.0:3000
web_1 | Use Ctrl-C to stop
↓
訪問 EC2 的公網 IP
↓
顯示 ERR_CONNECTION_REFUSED
uj5u.com熱心網友回復:
根據評論。
問題是在安全組中阻止了埠 3000。解決方案是允許該埠。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/424096.html
上一篇:Ruby-引號內的陣列
下一篇:Rails-部分錯誤未呈現
