代码之家  ›  专栏  ›  技术社区  ›  josegp

访问DigitalOcean液滴中部署的应用程序

  •  0
  • josegp  · 技术社区  · 2 年前

    我有一个Rails API和React前端应用程序,我想在DigitalOcean中部署。

    结构如下所示:

    |- api/
    |- front/
    |- docker-compose.yml
    

    所以当我跑步的时候 docker compose up 所有的集装箱都造好了。 我的 docker-compose.yml 看起来是这样的:

    version: "3.8"
    
    services:
      db:
        image: postgres
        volumes:
          - ./tmp/db:/var/lib/postgresql/data
        environment:
          POSTGRES_USER: ${POSTGRES_USER:-user}
          POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-postgres}
    
      api:
        build:
          context: ./api/
          dockerfile: Dockerfile
        command: /bin/sh -c "rm -f /myapp-api/tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'"
        ports:
          - "3000:3000"
        volumes:
          - ./api:/myapp-api
        environment:
          TZ: Asia/Tokyo
          RAILS_ENV: ${RAILS_ENV:-development}
          DEVISE_JWT_SECRET_KEY: ${DEVISE_JWT_SECRET_KEY}
          GMAIL_SMTP_USER: ${GMAIL_SMTP_USER}
          GMAIL_SMTP_PASSWORD: ${GMAIL_SMTP_PASSWORD}
          APP_NAME: ${APP_NAME}
          REDIS_URL: ${REDIS_URL}
          SHOP_FRONTEND_URL: ${SHOP_FRONTEND_URL}
          API_DATABASE_PASSWORD: ${API_DATABASE_PASSWORD}
        depends_on:
          - db
          - redis
    
      front:
        build:
          context: ./front/
          dockerfile: Dockerfile
        command: sh -c "cd myapp-front && npm install && npm start"
        ports:
          - "3001:3000"
        volumes:
          - ./front:/usr/src/app
        environment:
          REACT_APP_API_URL: ${REACT_APP_API_URL}
    
      redis:
        image: redis
        command: redis-server
        ports:
          - "6379:6379"
    
      sidekiq:
        build:
          context: ./api/
          dockerfile: Dockerfile
        command: bundle exec sidekiq
        volumes:
          - ./api:/myapp-api
        environment:
          REDIS_URL: ${REDIS_URL}
          GMAIL_SMTP_USER: ${GMAIL_SMTP_USER}
          GMAIL_SMTP_PASSWORD: ${GMAIL_SMTP_PASSWORD}
          APP_NAME: ${APP_NAME}
          SHOP_FRONTEND_URL: ${SHOP_FRONTEND_URL}
          SHOP_API_URL: ${SHOP_API_URL}
        depends_on:
          - db
          - redis
    

    访问时在本地运行良好 http://localhost:3001 在dev和prod环境中。

    现在,我在DigitalOcean的一个液滴中部署了该应用程序。url现在看起来是这样的:

    http://<public ipv4 of droplet>:3001
    

    所以我更新了 .env 相应地归档。

    我还更新了防火墙。它看起来是这样的:

    Status: active
    
    To                         Action      From
    --                         ------      ----
    22/tcp                     LIMIT       Anywhere                  
    2375/tcp                   ALLOW       Anywhere                  
    2376/tcp                   ALLOW       Anywhere                  
    3000/tcp                   ALLOW       Anywhere                  
    80/tcp                     ALLOW       Anywhere                  
    3001/tcp                   ALLOW       Anywhere                  
    22/tcp (v6)                LIMIT       Anywhere (v6)             
    2375/tcp (v6)              ALLOW       Anywhere (v6)             
    2376/tcp (v6)              ALLOW       Anywhere (v6)             
    3000/tcp (v6)              ALLOW       Anywhere (v6)             
    80/tcp (v6)                ALLOW       Anywhere (v6)             
    3001/tcp (v6)              ALLOW       Anywhere (v6)   
    

    但是,当我尝试在浏览器中访问它时,如:

    http://<液滴的公共ipv4>:3001
    

    它不起作用。我做错了什么?

    注意:

    不过我可以访问sidekiq:

    http://<public ipv4 of droplet>:3000/sidekiq
    

    非常感谢。

    0 回复  |  直到 2 年前