質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

解決済

2回答

5738閲覧

Dockerの$ docker exec -it コンテナ名 /bin/bash について。

KazumaWadaa

総合スコア12

bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

0クリップ

投稿2020/10/26 01:55

rails6, MySQLでDockerの環境構築をしたのですが、

rails g controller Users

などを実行する場合、

$ docker exec -it 起動中のコンテナ名 /bin/bash

をして生まれたターミナルで、実行するのでしょうか?
rails gで実際にファイルが作成されるのですが、ターミナルの先頭が$ではなく#になっているので、違和感があります。

他のターミナルにも($マークが先頭にある)rails g を実行して見たのですが、自分のMacOSの環境であるため、できませんでした。

まとめ

$ docker exec -it 起動中のコンテナ名 /bin/bash

をしたファイルで、railsを書いていけばいいのか、また他の方法で、Docker環境がしっかりと影響されているターミナルがあるのか教えていただけたら幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

rails コマンドは Docker コンテナーの環境で実行する必要があります
docker exec コマンドは実行中のコンテナー内でコマンドを実行するためのコマンドです

参考: docker exec | Docker Documentation

console

1docker exec -it 起動中のコンテナ名 /bin/bash

このコマンドはコンテナー内でシェル (bash) を実行します
そして、現在のターミナルをコンテナー内で起動したシェルに接続し(-t オプション)
対話的にコマンドを入力する (-i オプション) ための方法です

コンテナー内であらかじめ定義されているコマンドとは異なるコマンドを実行するためには
この docker execdocker run コマンドを使い分けることになります

Docker に特化したターミナルであれば、
Docker Desktop の Dashboard を開き、
対象のコンテナーにマウスカーソルを合わせると表示されるボタンから
ターミナルを開くことができますが、
普段使い慣れているターミナルに比べて、むしろ不便であると思われます

投稿2020/10/26 03:02

y_shinoda

総合スコア3272

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

docker exec は実行中のコンテナ内でプログラムを実行するコマンドです。
つまり

bash

1$ docker exec -it 起動中のコンテナ名 /bin/bash

を実行するということは、コンテナでbashを実行していることになります。
そのため、それ移行に表示されるプロンプトはコンテナ内でのbashのプロンプトになります。

ターミナルの先頭が$ではなく#になっているので、違和感があります。

ほとんどの場合、bashのプロンプトは一般ユーザは$、rootユーザは#になります。
これは

bash

1$ echo $PS1

などとして表示すればわかります。
また、$PS1を変更することで変えることもできます。(ご参考

$ docker exec -it 起動中のコンテナ名 /bin/bash

をしたファイルで、railsを書いていけばいいのか、

別にこのやり方でも構わないと思いますが、コマンドを1行入力したいだけなら、いちいちコンテナ内のbashを起動しなくても

bash

1$ docker exec 起動中のコンテナ名 実行したいコマンド

を直接実行すれば良いんじゃないでしょうか。

docker-composeを使っているのであればdocker-compose exec コンテナ名 実行したいコマンドみたいになるでしょうけど。

投稿2020/10/26 02:59

gentaro

総合スコア8947

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問