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

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

新規登録して質問してみよう
ただいま回答率
85.48%
docker-compose

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

Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

Docker

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

322閲覧

コンテナ作成時にjupyter notebook をブラウザで開くようにしたい

alfee

総合スコア12

docker-compose

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

Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

Docker

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

1クリップ

投稿2022/09/23 07:53

前提

docker-compose up -d でコンテナを作成すると同時に
jupyter notebookを開きたいです。
(元となるイメージは作成済みの状態です)

実現したいこと

docker-compose.ymlファイルを調整し、
指定のurlを開くコマンドを打ちたい 。(portsを7788しているため、http://localhost:7788 を開こうとしています)

該当のソースコード

docker-compose.yml

version: '3.8' services: python: restart: always build: . container_name: 'test' working_dir: '/root/opt/' tty: true volumes: - ./opt:/root/opt ports: - "7788:7788" command: > jupyter notebook --port=7788 --ip=0.0.0.0 --allow-root --NotebookApp.token=''

試したこと

ファイル内のcommand欄に、ファイルを開くためのコマンドを2つ打ちました。以下2つのコマンドはそれぞれ

jupyter notebook --port=7788 --ip=0.0.0.0 --allow-root --NotebookApp.token='' 

の一つ手前に行を作成し、そこへ打ちこんでいました。

①open http://localhost:7788
②curl http://localhost:7788

どちらもurlを開くことは出来ませんでした。

補足情報(FW/ツールのバージョンなど)

使用しているパソコン:Mac Book Air(M1 , 2020)

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

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

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

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

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

hoshi-takanori

2022/09/23 15:54

docker-compose.yml の command 欄はコンテナの中で実行するコマンドを指定するものだと思いますが、ブラウザはコンテナの外で動かしたいのでは?
alfee

2022/09/23 16:05

返信ありがとうございます。 そうですね、ブラウザはコンテナの外で起動させたいと考えています。 今までは、シェルスクリプト(.shのやつ)にopenコマンド等載せた物を作成し、それをbashコマンド動かしていました。
alfee

2022/09/23 16:06

ただ、それだとimage作成時とはまた別にコマンドを書く必要があり面倒でした。どうにか時短は出来ないものかと思い、今回の投稿をする流れになりました。
hoshi-takanori

2022/09/23 16:13

シェルスクリプトで良いのでは。docker のようなコンテナは、どんな環境でもそのコンテナが同じように動くためのもので、コンテナの外部の環境に依存するのは良くないはず…。
alfee

2022/09/23 16:18

なるほど。確かにその通りですね…。 他のPCでそのコンテナを作動させるときに、かえって面倒なことになりそうです。 シェルスクリプトを素直に使うことにします。
alfee

2022/09/23 16:20

ご回答ありがとうございました!
guest

回答1

0

自己解決

 urlを外部のブラウザ(Chromeなど)に開く動作は、ローカルで自作したシェルスクリプトに任せることにしました。

jn.sh

1open http://localhost:7070 \ 2-a "Google Chrome"

このファイルを任意の場所へ置き、コンテナが起動している状態で、ターミナルに

bash ここには、シェルスクリプトまでのパスを入力/jn.sh

を打ち込み、ブラウザへアクセスできます。

追記

 このシェルスクリプトの起動をアプリ化して、更に時短も可能です(Macの機能かな?Windowsはわかりません)。bashコマンドを度々打つのが面倒だと思っている人にオススメです。

その際に、この方の記事を見ながらやりました。
[Macでシェルスクリプトを .appアイコン化する方法](https://qiita.com/KurosawaTsuyoshi/items/425cd484e8d7759af460

(私の場合はでしたが)画像中の実行ボタン(赤い丸)を押した後、ログにエラーとして
"permission denied"が表示されることがあります。イメージ説明
単純に許可を与えてやれば良いので、ターミナル上で

chmod +x ここにはシェルスクリプトまでのパスを入力/jn.sh

を行った所、エラーが無くなりました。後は上記の記事通り、動作をアプリ化すればokです。作ったアプリはDockへ追加しておきましょう。

これで 「docker compose up -d --build」 でimageとcontainerを作成した後に、Dockにあるアプリをクリックすれば、(少しではありますが)jupyter notebookを早く開けるようになりました。

もしDockerによるpython環境整備のために、何度もimageやcontainerを作っている方は
やってみると良いかもしれません。

引用テキスト

1.Macでシェルスクリプトを .appアイコン化する方法

2.Linuxでシェルスクリプト実行時に[permission denied]が出たときに確認すべきこと

投稿2022/09/24 07:39

alfee

総合スコア12

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問