JBrowseをDockerで動かす、その3、Dockerfileのbuild
続きです
mecobalamin.hatenablog.com
JBrowseをインストールする環境を
DockerのUbuntuに作成する
作成にはDockerfileを利用する
以下のような内容のテキストファイルを
ファイル名をDockerfileとして
任意のディレクトリに保存する
FROM ubuntu:latest RUN apt-get update && \ apt-get install -y tzdata && \ apt-get install -y wget less unzip \ nodejs npm git \ build-essential libpng-dev zlib1g-dev libgd-dev
一行目のFROMで最新のUbuntuイメージをダウンロードする
二行目のRUN以降はコマンドのインストールをしている
改行(&&\または\)されているが一行の命令として実行される
これはDockerのレイヤーを必要以上に作らせないための措置
apt-get installを使うとタイムゾーンの入力を求められることがある
それを避けるためにtzdataをインストールする
ただしコンテナのタイムゾーンがUTCになるので必要ならJSTに変更する
$ ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
wgetとlessとunzipはubuntu実行後にコマンドのインストールに使う
nodejs/npm/gitはJBrowseのインストールシェルスクリプトを実行すると要求される
libpng-dev zlib1g-dev libgd-devはJBrowseのTrouble shootingに
載っていたのでインストールする
JBrowse requires a few fundamental prerequisites that it cannot install itself: these are libpng, zlib, libgd, make, a C compiler, and a C++ compiler.
JBrowse Troubleshooting - GMOD
次にDockerfileを保存したディレクトリで
Dockerfileのビルドを行う
$ docker build --network host -f Dockerfile . -t jbrowse
networkオプションでホストのネットワークを利用できる
docker image build時に、DNSの設定をなんとかしたい - CLOVER🍀
出力されるimageの名前はjbrowseになる
以下のようにコンテナを起動する
$ docker run --rm -v /e/hoge:/tmp/fuga -v JBrowse:/usr/share/nginx/html/ -it --name jbrowse jbrowse
rmオプションでコンテナ終了時に自動でコンテナを削除する
vオプションでマウント元と先を指定する
この場合2つあるが1つ目は
wslの/e/hogeをdockerの/tmp/fugaにマウントしている
2つ目はDockerで作ったボリュームのJBrowseを
Dockerの/usr/share/nginx/htmlにマウントしている
Dockerfileのビルドのときにapt-getを失敗することがある
ホストのDNSを設定し直すと解決する
設定ファイルは/etc/resolv.conf
$ sudo vim /etc/resolv.conf
以下のサーバーを追記する
nameserver 8.8.8.8
いまのところ/etc/resolv.confはなにかのタイミングで
更新されて追記した分が消えることがある
resolv.confに以下のように書かれているので
試してみたら保持されるかも
(まだ試してない)
# This file was automatically generated by WSL. To stop automatic generation of this file, add the following entry to /etc/wsl.conf:
# [network]
# generateResolvConf = false
docker-machine.exeを再起動すると
解決する場合もあった