Mar*_*ion 5 ruby-on-rails docker webpack docker-compose ruby-on-rails-6
我目前正在“dockerizing”一个 Rails 6 应用程序,以 MySQL 作为后端/管理面板,以 Angular 8 应用程序作为用户的前端。我尝试使用 docker-compose 运行两个容器,前端工作正常,但后端有问题。webpack 服务器不知何故无法启动。它总是告诉我找不到“webpack-dev-server”,然后退出。这很奇怪,因为我让相同的设置在 Linux/Ubuntu 系统上运行并且它工作正常,但在 Mac 上 Webpacker 失败了。
\n\n这是我的设置:
\n\nDockerfile:
\n\nFROM ruby:2.5.5\n\nRUN curl -sL https://deb.nodesource.com/setup_10.x | bash - && \\\n curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \\\n echo "deb https://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list && \\\n apt-get update && \\\n apt-get install -qq -y \\\n build-essential nodejs yarn libpq-dev \\\n && mkdir -p /app \\\n && apt-get clean autoclean \\\n && apt-get autoremove -y\n\nWORKDIR /tmp\nCOPY Gemfile* /tmp/\nRUN bundle install\n\nCOPY package* /tmp/\nCOPY yarn* /tmp/\nRUN yarn install\n\nADD scripts/entrypoint.sh /usr/bin/\nRUN chmod +x /usr/bin/entrypoint.sh\nENTRYPOINT ["entrypoint.sh"]\n\nWORKDIR /app\nCOPY . /app\n\nEXPOSE 3000\n\n# Start the main process.\nCMD ["rails", "server", "-b", "0.0.0.0"]\nRun Code Online (Sandbox Code Playgroud)\n\ndocker-compose.yml:
\n\nversion: \'3\'\nservices:\n backend:\n build: ./backend\n volumes:\n - ./backend:/app\n - ./backend/scripts:/scripts\n ports:\n - "3000:3000"\n dns: # Needed for making request outside the container\n - 1.1.1.1\n command: ["/scripts/wait-for-it.sh", "db:3306", "--", "/scripts/wait-for-it.sh", "webpacker:3035", "--", "/scripts/start_rails.sh"]\n depends_on:\n - db\n - webpacker\n - frontend\n environment:\n DB_PASSWORD: root\n DB_HOST: db\n WEBPACKER_DEV_SERVER_HOST: webpacker # overwrites the webpacker.yml -> dev_server -> hosts value\n\n db:\n image: mariadb:10.4.10\n volumes:\n - ./volumes/mysql:/var/lib/mysql\n environment:\n MYSQL_ROOT_PASSWORD: root\n\n webpacker:\n build: ./backend\n command: ["/app/bin/webpack-dev-server"]\n volumes:\n - ./backend:/app\n ports:\n - "3035:3035"\n\n frontend: //This one works fine\n build: ./frontend\n volumes:\n - ./frontend:/app\n - ./frontend/node_modules:/app/node_modules\n ports:\n - \'4200:4200\'\nRun Code Online (Sandbox Code Playgroud)\n\nwebpacker.yml:
\n\n# Note: You must restart bin/webpack-dev-server for changes to take effect\n\ndefault: &default\n source_path: app/webpacker\n source_entry_path: packs\n public_root_path: public\n public_output_path: packs\n cache_path: tmp/cache/webpacker\n check_yarn_integrity: false\n webpack_compile_output: false\n\n # Additional paths webpack should lookup modules\n # [\'app/assets\', \'engine/foo/app/assets\']\n resolved_paths: []\n\n # Reload manifest.json on all requests so we reload latest compiled packs\n cache_manifest: false\n\n # Extract and emit a css file\n extract_css: true\n\n static_assets_extensions:\n - .jpg\n - .jpeg\n - .png\n - .gif\n - .tiff\n - .ico\n - .svg\n - .eot\n - .otf\n - .ttf\n - .woff\n - .woff2\n\n extensions:\n - .mjs\n - .js\n - .sass\n - .scss\n - .css\n - .module.sass\n - .module.scss\n - .module.css\n - .png\n - .svg\n - .gif\n - .jpeg\n - .jpg\n\ndevelopment:\n <<: *default\n compile: true\n\n # Verifies that correct packages and versions are installed by inspecting package.json, yarn.lock, and node_modules\n check_yarn_integrity: false\n\n # Reference: https://webpack.js.org/configuration/dev-server/\n dev_server:\n https: false\n host: 0.0.0.0\n port: 3035\n public: 0.0.0.0:3035\n hmr: false\n # Inline should be set to true if using HMR\n inline: true\n overlay: true\n compress: true\n disable_host_check: true\n use_local_ip: false\n quiet: false\n headers:\n \'Access-Control-Allow-Origin\': \'*\'\n watch_options:\n ignored: \'**/node_modules/**\'\n\n\ntest:\n <<: *default\n compile: true\n\n # Compile test packs to a separate directory\n public_output_path: packs-test\n\nproduction:\n <<: *default\n\n # Production depends on precompilation of packs prior to booting for performance.\n compile: false\n\n # Extract and emit a css file\n extract_css: true\n\n # Cache manifest.json for performance\n cache_manifest: true\nRun Code Online (Sandbox Code Playgroud)\n\n“docker-compose up”上的控制台输出(构建工作正常):
\n\nCreating network "lms_default" with the default driver\nCreating lms_db_1 ... done\nCreating lms_webpacker_1 ... done\nCreating lms_frontend_1 ... done\nCreating lms_backend_1 ... done\nAttaching to lms_db_1, lms_frontend_1, lms_webpacker_1, lms_backend_1\nfrontend_1 | Your global Angular CLI version (8.3.23) is greater than your local\nfrontend_1 | version (8.1.3). The local Angular CLI version is used.\nfrontend_1 | \nfrontend_1 | To disable this warning use "ng config -g cli.warnings.versionMismatch false".\ndb_1 | 2020-01-28 12:11:25+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 1:10.4.10+maria~bionic started.\ndb_1 | 2020-01-28 12:11:26+00:00 [Note] [Entrypoint]: Switching to dedicated user \'mysql\'\ndb_1 | 2020-01-28 12:11:26+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 1:10.4.10+maria~bionic started.\nbackend_1 | wait-for-it.sh: waiting 15 seconds for db:3306\ndb_1 | 2020-01-28 12:11:26 0 [Note] mysqld (mysqld 10.4.10-MariaDB-1:10.4.10+maria~bionic) starting as process 1 ...\ndb_1 | 2020-01-28 12:11:26 0 [Note] InnoDB: Using Linux native AIO\ndb_1 | 2020-01-28 12:11:26 0 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins\ndb_1 | 2020-01-28 12:11:26 0 [Note] InnoDB: Uses event mutexes\ndb_1 | 2020-01-28 12:11:26 0 [Note] InnoDB: Compressed tables use zlib 1.2.11\ndb_1 | 2020-01-28 12:11:26 0 [Note] InnoDB: Number of pools: 1\ndb_1 | 2020-01-28 12:11:26 0 [Note] InnoDB: Using SSE2 crc32 instructions\ndb_1 | 2020-01-28 12:11:26 0 [Note] mysqld: O_TMPFILE is not supported on /tmp (disabling future attempts)\ndb_1 | 2020-01-28 12:11:26 0 [Note] InnoDB: Initializing buffer pool, total size = 256M, instances = 1, chunk size = 128M\ndb_1 | 2020-01-28 12:11:27 0 [Note] InnoDB: Completed initialization of buffer pool\ndb_1 | 2020-01-28 12:11:27 0 [Note] InnoDB: If the mysqld execution user is authorized, page cleaner thread priority can be changed. See the man page of setpriority().\ndb_1 | 2020-01-28 12:11:27 0 [Note] InnoDB: 128 out of 128 rollback segments are active.\ndb_1 | 2020-01-28 12:11:27 0 [Note] InnoDB: Creating shared tablespace for temporary tables\ndb_1 | 2020-01-28 12:11:27 0 [Note] InnoDB: Setting file \'./ibtmp1\' size to 12 MB. Physically writing the file full; Please wait ...\nwebpacker_1 | yarn run v1.21.1\nwebpacker_1 | error Command "webpack-dev-server" not found.\nwebpacker_1 | info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.\nlms_webpacker_1 exited with code 1\ndb_1 | 2020-01-28 12:11:28 0 [Note] InnoDB: File \'./ibtmp1\' size is now 12 MB.\ndb_1 | 2020-01-28 12:11:28 0 [Note] InnoDB: 10.4.10 started; log sequence number 20282472; transaction id 14616\ndb_1 | 2020-01-28 12:11:28 0 [Note] Plugin \'FEEDBACK\' is disabled.\ndb_1 | 2020-01-28 12:11:28 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool\ndb_1 | 2020-01-28 12:11:28 0 [Note] Server socket created on IP: \'::\'.\ndb_1 | 2020-01-28 12:11:28 0 [Note] InnoDB: Buffer pool(s) load completed at 200128 12:11:28\ndb_1 | 2020-01-28 12:11:28 0 [Warning] \'proxies_priv\' entry \'@% root@c8d38e939209\' ignored in --skip-name-resolve mode.\ndb_1 | 2020-01-28 12:11:28 0 [Note] Reading of all Master_info entries succeeded\ndb_1 | 2020-01-28 12:11:28 0 [Note] Added new Master_info \'\' to hash table\ndb_1 | 2020-01-28 12:11:28 0 [Note] mysqld: ready for connections.\ndb_1 | Version: \'10.4.10-MariaDB-1:10.4.10+maria~bionic\' socket: \'/var/run/mysqld/mysqld.sock\' port: 3306 mariadb.org binary distribution\ndb_1 | 2020-01-28 12:11:29 8 [Warning] Aborted connection 8 to db: \'unconnected\' user: \'unauthenticated\' host: \'192.168.0.5\' (This connection closed normally without authentication)\nbackend_1 | wait-for-it.sh: db:3306 is available after 3 seconds\nbackend_1 | wait-for-it.sh: waiting 15 seconds for webpacker:3035\nfrontend_1 | WARNING: This is a simple server for use in testing or debugging Angular applications\nfrontend_1 | locally. It hasn\'t been reviewed for security issues.\nfrontend_1 | \nfrontend_1 | Binding this server to an open connection can result in compromising your application or\nfrontend_1 | computer. Using a different host than the one passed to the "--host" flag might result in\nfrontend_1 | websocket connection issues. You might need to use "--disableHostCheck" if that\'s the\nfrontend_1 | case.\nfrontend_1 | \xe2\x84\xb9 \xef\xbd\xa2wds\xef\xbd\xa3: Project is running at http://0.0.0.0:4200/webpack-dev-server/\nfrontend_1 | \xe2\x84\xb9 \xef\xbd\xa2wds\xef\xbd\xa3: webpack output is served from /\nfrontend_1 | \xe2\x84\xb9 \xef\xbd\xa2wds\xef\xbd\xa3: 404s will fallback to //index.html\nbackend_1 | wait-for-it.sh: timeout occurred after waiting 15 seconds for webpacker:3035\nfrontend_1 | \nfrontend_1 | chunk {0} 0.js, 0.js.map () 13.2 kB [rendered]\nfrontend_1 | chunk {1} 1.js, 1.js.map () 19.9 kB [rendered]\nfrontend_1 | chunk {2} 2.js, 2.js.map () 17 kB [rendered]\nfrontend_1 | chunk {3} 3.js, 3.js.map () 31 kB [rendered]\nfrontend_1 | chunk {4} 4.js, 4.js.map () 31.1 kB [rendered]\nfrontend_1 | chunk {5} 5.js, 5.js.map () 57.5 kB [rendered]\nfrontend_1 | chunk {6} 6.js, 6.js.map () 56.2 kB [rendered]\nfrontend_1 | chunk {7} 7.js, 7.js.map () 4.59 kB [rendered]\nfrontend_1 | chunk {8} 8.js, 8.js.map () 4.64 kB [rendered]\nfrontend_1 | chunk {9} 9.js, 9.js.map () 9.43 kB [rendered]\nfrontend_1 | chunk {10} 10.js, 10.js.map () 9.97 kB [rendered]\nfrontend_1 | chunk {11} 11.js, 11.js.map () 3.71 kB [rendered]\nfrontend_1 | chunk {12} 12.js, 12.js.map () 3.7 kB [rendered]\nfrontend_1 | chunk {13} 13.js, 13.js.map () 22.7 kB [rendered]\nfrontend_1 | chunk {14} 14.js, 14.js.map () 22.8 kB [rendered]\nfrontend_1 | chunk {15} 15.js, 15.js.map () 12 kB [rendered]\nfrontend_1 | chunk {16} 16.js, 16.js.map () 11.6 kB [rendered]\nfrontend_1 | chunk {17} 17.js, 17.js.map () 8.39 kB [rendered]\nfrontend_1 | chunk {18} 18.js, 18.js.map () 8.52 kB [rendered]\nfrontend_1 | chunk {19} 19.js, 19.js.map () 5.61 kB [rendered]\nfrontend_1 | chunk {20} 20.js, 20.js.map () 5.61 kB [rendered]\nfrontend_1 | chunk {21} 21.js, 21.js.map () 15.9 kB [rendered]\nfrontend_1 | chunk {22} 22.js, 22.js.map () 66.2 kB [rendered]\nfrontend_1 | chunk {23} 23.js, 23.js.map () 65.9 kB [rendered]\nfrontend_1 | chunk {24} 24.js, 24.js.map () 19 kB [rendered]\nfrontend_1 | chunk {25} 25.js, 25.js.map () 18.1 kB [rendered]\nfrontend_1 | chunk {26} 26.js, 26.js.map () 3.42 kB [rendered]\nfrontend_1 | chunk {27} 27.js, 27.js.map () 12.6 kB [rendered]\nfrontend_1 | chunk {28} 28.js, 28.js.map () 12.6 kB [rendered]\nfrontend_1 | chunk {29} 29.js, 29.js.map () 14.4 kB [rendered]\nfrontend_1 | chunk {30} 30.js, 30.js.map () 14.3 kB [rendered]\nfrontend_1 | chunk {31} 31.js, 31.js.map () 25.7 kB [rendered]\nfrontend_1 | chunk {32} 32.js, 32.js.map () 25.6 kB [rendered]\nfrontend_1 | chunk {33} 33.js, 33.js.map () 39.2 kB [rendered]\nfrontend_1 | chunk {34} 34.js, 34.js.map () 42.8 kB [rendered]\nfrontend_1 | chunk {35} 35.js, 35.js.map () 13.1 kB [rendered]\nfrontend_1 | chunk {36} 36.js, 36.js.map () 12.8 kB [rendered]\nfrontend_1 | chunk {37} 37.js, 37.js.map () 31.6 kB [rendered]\nfrontend_1 | chunk {38} 38.js, 38.js.map () 31.7 kB [rendered]\nfrontend_1 | chunk {39} 39.js, 39.js.map () 14.9 kB [rendered]\nfrontend_1 | chunk {40} 40.js, 40.js.map () 14.9 kB [rendered]\nfrontend_1 | chunk {41} 41.js, 41.js.map () 37.5 kB [rendered]\nfrontend_1 | chunk {42} 42.js, 42.js.map () 20.5 kB [rendered]\nfrontend_1 | chunk {43} 43.js, 43.js.map () 19.8 kB [rendered]\nfrontend_1 | chunk {44} 44.js, 44.js.map () 12.6 kB [rendered]\nfrontend_1 | chunk {45} 45.js, 45.js.map () 12.6 kB [rendered]\nfrontend_1 | chunk {46} 46.js, 46.js.map () 12 kB [rendered]\nfrontend_1 | chunk {47} 47.js, 47.js.map () 12.2 kB [rendered]\nfrontend_1 | chunk {48} 48.js, 48.js.map () 20.5 kB [rendered]\nfrontend_1 | chunk {49} 49.js, 49.js.map () 21.9 kB [rendered]\nfrontend_1 | chunk {50} 50.js, 50.js.map () 18.3 kB [rendered]\nfrontend_1 | chunk {51} 51.js, 51.js.map () 18.3 kB [rendered]\nfrontend_1 | chunk {52} 52.js, 52.js.map () 12.6 kB [rendered]\nfrontend_1 | chunk {53} 53.js, 53.js.map () 12.6 kB [rendered]\nfrontend_1 | chunk {54} 54.js, 54.js.map () 6.48 kB [rendered]\nfrontend_1 | chunk {55} 55.js, 55.js.map () 24.4 kB [rendered]\nfrontend_1 | chunk {56} 56.js, 56.js.map () 26.2 kB [rendered]\nfrontend_1 | chunk {57} 57.js, 57.js.map () 23.9 kB [rendered]\nfrontend_1 | chunk {58} 58.js, 58.js.map () 15.4 kB [rendered]\nfrontend_1 | chunk {59} 59.js, 59.js.map () 15.1 kB [rendered]\nfrontend_1 | chunk {60} 60.js, 60.js.map () 21.9 kB [rendered]\nfrontend_1 | chunk {61} 61.js, 61.js.map () 21.9 kB [rendered]\nfrontend_1 | chunk {62} 62.js, 62.js.map () 36.8 kB [rendered]\nfrontend_1 | chunk {63} 63.js, 63.js.map () 36.8 kB [rendered]\nfrontend_1 | chunk {64} 64.js, 64.js.map () 10.7 kB [rendered]\nfrontend_1 | chunk {65} 65.js, 65.js.map () 6.5 kB [rendered]\nfrontend_1 | chunk {66} 66.js, 66.js.map () 6.49 kB [rendered]\nfrontend_1 | chunk {67} 67.js, 67.js.map () 14.2 kB [rendered]\nfrontend_1 | chunk {68} 68.js, 68.js.map () 14.4 kB [rendered]\nfrontend_1 | chunk {69} 69.js, 69.js.map () 8.34 kB [rendered]\nfrontend_1 | chunk {70} 70.js, 70.js.map () 1.84 kB [rendered]\nfrontend_1 | chunk {71} 71.js, 71.js.map () 12.4 kB [rendered]\nfrontend_1 | chunk {72} 72.js, 72.js.map () 12.4 kB [rendered]\nfrontend_1 | chunk {73} 73.js, 73.js.map () 18.1 kB [rendered]\nfrontend_1 | chunk {74} 74.js, 74.js.map () 18.7 kB [rendered]\nfrontend_1 | chunk {75} 75.js, 75.js.map () 11 kB [rendered]\nfrontend_1 | chunk {76} 76.js, 76.js.map () 10.9 kB [rendered]\nfrontend_1 | chunk {77} 77.js, 77.js.map () 20.2 kB [rendered]\nfrontend_1 | chunk {common} common.js, common.js.map (common) 30.6 kB [rendered]\nfrontend_1 | chunk {core-js-js} core-js-js.js, core-js-js.js.map (core-js-js) 78.7 kB [rendered]\nfrontend_1 | chunk {css-shim-206ea950-3169f23e-js} css-shim-206ea950-3169f23e-js.js, css-shim-206ea950-3169f23e-js.js.map (css-shim-206ea950-3169f23e-js) 21.9 kB [rendered]\nfrontend_1 | chunk {dom-96781eef-a2fb04dd-js} dom-96781eef-a2fb04dd-js.js, dom-96781eef-a2fb04dd-js.js.map (dom-96781eef-a2fb04dd-js) 19.8 kB [rendered]\nfrontend_1 | chunk {dom-js} dom-js.js, dom-js.js.map (dom-js) 20.2 kB [rendered]\nfrontend_1 | chunk {focus-visible-70713a0c-js} focus-visible-70713a0c-js.js, focus-visible-70713a0c-js.js.map (focus-visible-70713a0c-js) 2.15 kB [rendered]\nfrontend_1 | chunk {hardware-back-button-5afe3cb0-js} hardware-back-button-5afe3cb0-js.js, hardware-back-button-5afe3cb0-js.js.map (hardware-back-button-5afe3cb0-js) 2.06 kB [rendered]\nfrontend_1 | chunk {home-home-module} home-home-module.js, home-home-module.js.map (home-home-module) 34.4 kB [rendered]\nfrontend_1 | chunk {index-69c37885-js} index-69c37885-js.js, index-69c37885-js.js.map (index-69c37885-js) 37.7 kB [rendered]\nfrontend_1 | chunk {input-shims-7a8a317c-js} input-shims-7a8a317c-js.js, input-shims-7a8a317c-js.js.map (input-shims-7a8a317c-js) 13.5 kB [rendered]\nfrontend_1 | chunk {ios-transition-becf5388-js} ios-transition-becf5388-js.js, ios-transition-becf5388-js.js.map (ios-transition-becf5388-js) 24.7 kB [rendered]\nfrontend_1 | chunk {leaderboard-leaderboard-module} leaderboard-leaderboard-module.js, leaderboard-leaderboard-module.js.map (leaderboard-leaderboard-module) 20.8 kB [rendered]\nfrontend_1 | chunk {login-login-module} login-login-module.js, login-login-module.js.map (login-login-module) 5.73 kB [rendered]\nfrontend_1 | chunk {main} main.js, main.js.map (main) 40.9 kB [initial] [rendered]\nfrontend_1 | chunk {md-transition-f444ed6d-js} md-transition-f444ed6d-js.js, md-transition-f444ed6d-js.js.map (md-transition-f444ed6d-js) 3.46 kB [rendered]\nfrontend_1 | chunk {polyfills} polyfills.js, polyfills.js.map (polyfills) 278 kB [initial] [rendered]\nfrontend_1 | chunk {profile-profile-module} profile-profile-module.js, profile-profile-module.js.map (profile-profile-module) 19.8 kB [rendered]\nfrontend_1 | chunk {quiz-quiz-module} quiz-quiz-module.js, quiz-quiz-module.js.map (quiz-quiz-module) 22.5 kB [rendered]\nfrontend_1 | chunk {quiz-result-quiz-result-module} quiz-result-quiz-result-module.js, quiz-result-quiz-result-module.js.map (quiz-result-quiz-result-module) 21.2 kB [rendered]\nfrontend_1 | chunk {runtime} runtime.js, runtime.js.map (runtime) 10 kB [entry] [rendered]\nfrontend_1 | chunk {shadow-css-4889ae62-23996f3f-js} shadow-css-4889ae62-23996f3f-js.js, shadow-css-4889ae62-23996f3f-js.js.map (shadow-css-4889ae62-23996f3f-js) 14.8 kB [rendered]\nfrontend_1 | chunk {status-tap-7ab22cb8-js} status-tap-7ab22cb8-js.js, status-tap-7ab22cb8-js.js.map (status-tap-7ab22cb8-js) 1.79 kB [rendered]\nfrontend_1 | chunk {styles} styles.js, styles.js.map (styles) 112 kB [initial] [rendered]\nfrontend_1 | chunk {swipe-back-35ad8e37-js} swipe-back-35ad8e37-js.js, swipe-back-35ad8e37-js.js.map (swipe-back-35ad8e37-js) 2.68 kB [rendered]\nfrontend_1 | chunk {swiper-bundle-ccdaac54-js} swiper-bundle-ccdaac54-js.js, swiper-bundle-ccdaac54-js.js.map (swiper-bundle-ccdaac54-js) 176 kB [rendered]\nfrontend_1 | chunk {tabs-tabs-module} tabs-tabs-module.js, tabs-tabs-module.js.map (tabs-tabs-module) 8.14 kB [rendered]\nfrontend_1 | chunk {tap-click-1f9d539e-js} tap-click-1f9d539e-js.js, tap-click-1f9d539e-js.js.map (tap-click-1f9d539e-js) 6.37 kB [rendered]\nfrontend_1 | chunk {vendor} vendor.js, vendor.js.map (vendor) 5.03 MB [initial] [rendered]\nfrontend_1 | Date: 2020-01-28T12:11:46.647Z - Hash: f5c10ec9500752dc7639 - Time: 15503ms\nfrontend_1 | ** Angular Live Development Server is listening on 0.0.0.0:4200, open your browser on http://localhost:4200/ **\nfrontend_1 | \xe2\x84\xb9 \xef\xbd\xa2wdm\xef\xbd\xa3: Compiled successfully.\nbackend_1 | Database \'swm_lms_development\' already exists\nbackend_1 | Database \'swm_lms_test\' already exists\nbackend_1 | => Booting Puma\nbackend_1 | => Rails 6.0.0 application starting in development \nbackend_1 | => Run `rails server --help` for more startup options\nbackend_1 | Puma starting in single mode...\nbackend_1 | * Version 3.12.1 (ruby 2.5.5-p157), codename: Llamas in Pajamas\nbackend_1 | * Min threads: 5, max threads: 5\nbackend_1 | * Environment: development\nbackend_1 | * Listening on tcp://0.0.0.0:3000\nbackend_1 | Use Ctrl-C to stop\nRun Code Online (Sandbox Code Playgroud)\n\n\n\n不幸的是我找不到任何解决我的问题的方法,所以我希望这里有人可以帮助我。提前致谢!
\n| 归档时间: |
|
| 查看次数: |
2317 次 |
| 最近记录: |