mecobalamin’s diary

人間万事塞翁が馬

https://help.hatenablog.com/entry/developer-option

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を再起動すると
解決する場合もあった

続きます