对 docker 网络/连接感到困惑
Confused by docker networking / connections
好的,所以我正在尝试将 Rails 应用程序部署到 docker 容器(主机 machine 是 mac)。我想先在开发中部署以检查一切是否正常。
我已经设置了一个 phpmyadmin 服务,我可以通过输入服务器名称 moviedb_mariamovie_1 以及用户 root 和相应的 PW 来连接到服务器。
但是无论我为 Rails 输入 database.yml 都不起作用:我尝试了 localhost,我尝试了 127.0.0.1,我尝试了“mariamovie”,我尝试了“moviedb_mariamovie_1”,然后它当我尝试 rails db:create(或任何实际涉及数据库的内容)时总是说“找不到主机”。
我对此完全感到困惑。我阅读了 docker 手册的数据库部分,但我似乎太笨了。
(我还有其他问题,但一个接一个:)
docker-compose.yml:
version: "3.7"
services:
moviedb:
image: tkhobbes/moviedb
restart: unless-stopped
ports:
- 3001:3000
depends_on:
- mariamovie
environment:
MYSQL_ROOT_PASSWORD: redacted
RAILS_ENV: development
volumes:
- /Users/thomas/Documents/Production/moviedb/storage:/opt/activestorage
mariamovie:
image: mariadb
restart: unless-stopped
ports:
- 3333:3306
environment:
MYSQL_ROOT_PASSWORD: redacted
phpmymaria:
image: phpmyadmin
restart: unless-stopped
ports:
- 8021:80
depends_on:
- mariamovie
environment:
PMA_PORT: 3333
PMA_ARBITRARY: 1
image: nginx:1.21-alpine
volumes:
- /Users/thomas/Documents/Production/moviedb/vendor/nginx:/etc/nginx/user.conf.d:ro
ports:
- 8020:8020
depends_on:
- moviedb
restart: unless-stopped
database.yml:
default: &default
adapter: mysql2
encoding: utf8mb4
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
host: 127.0.0.1
port: 3333
username: redacted
password: redacted
development:
<<: *default
database: newmovie_development
...
您在 docker“网络”中。您的数据库应该可以通过 mariamovie:3306
.
从您的 Rails 应用程序(也在里面)访问
好的,所以我正在尝试将 Rails 应用程序部署到 docker 容器(主机 machine 是 mac)。我想先在开发中部署以检查一切是否正常。
我已经设置了一个 phpmyadmin 服务,我可以通过输入服务器名称 moviedb_mariamovie_1 以及用户 root 和相应的 PW 来连接到服务器。 但是无论我为 Rails 输入 database.yml 都不起作用:我尝试了 localhost,我尝试了 127.0.0.1,我尝试了“mariamovie”,我尝试了“moviedb_mariamovie_1”,然后它当我尝试 rails db:create(或任何实际涉及数据库的内容)时总是说“找不到主机”。 我对此完全感到困惑。我阅读了 docker 手册的数据库部分,但我似乎太笨了。
(我还有其他问题,但一个接一个:)
docker-compose.yml:
version: "3.7"
services:
moviedb:
image: tkhobbes/moviedb
restart: unless-stopped
ports:
- 3001:3000
depends_on:
- mariamovie
environment:
MYSQL_ROOT_PASSWORD: redacted
RAILS_ENV: development
volumes:
- /Users/thomas/Documents/Production/moviedb/storage:/opt/activestorage
mariamovie:
image: mariadb
restart: unless-stopped
ports:
- 3333:3306
environment:
MYSQL_ROOT_PASSWORD: redacted
phpmymaria:
image: phpmyadmin
restart: unless-stopped
ports:
- 8021:80
depends_on:
- mariamovie
environment:
PMA_PORT: 3333
PMA_ARBITRARY: 1
image: nginx:1.21-alpine
volumes:
- /Users/thomas/Documents/Production/moviedb/vendor/nginx:/etc/nginx/user.conf.d:ro
ports:
- 8020:8020
depends_on:
- moviedb
restart: unless-stopped
database.yml:
default: &default
adapter: mysql2
encoding: utf8mb4
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
host: 127.0.0.1
port: 3333
username: redacted
password: redacted
development:
<<: *default
database: newmovie_development
...
您在 docker“网络”中。您的数据库应该可以通过 mariamovie:3306
.