Dockerでマイニングプール(python3)

諸先輩方々,どうしても取れない関門が...

python2なら以下の場所を,

&& sed -ri 's/from autobahn.websocket import WebSocketServerProtocol, WebSocketServerFactory/from autobahn.twisted.websocket import WebSocketServerProtocol, WebSocketServerFactory/g' /usr/local/lib/python2.7/dist-packages/stratum-0.2.13-py2.7.egg/stratum/websocket_transport.py

python3なら,こんな感じになると思うのですが...

&& sed -ri 's/from autobahn.websocket import WebSocketServerProtocol, WebSocketServerFactory/from autobahn.twisted.websocket import WebSocketServerProtocol, WebSocketServerFactory/g' /root/stratum-mining/externals/stratum/stratum/websocket_transport.py 

どうしてもうまくいきません...Help me…起動して落ちます.

コンテナをテスト

未来を変える仮想通貨を作っていこう

sachio@sachio-VirtualBox:~/Project/mpos-zeny-docker$ sudo docker run -it -p 80:80 -p 3333:3333 sgs01115/mpos-zeny-docker
sed: can’t read /etc/php5/apache2/php.ini: No such file or directory
=> Using an existing volume of MySQL
Traceback (most recent call last):
File “/usr/bin/supervisord”, line 6, in
from pkg_resources import load_entry_point
File “/usr/local/lib/python3.6/dist-packages/pkg_resources/init.py”, line 3241, in
@_call_aside
File “/usr/local/lib/python3.6/dist-packages/pkg_resources/init.py”, line 3225, in _call_aside
f(*args, **kwargs)
File “/usr/local/lib/python3.6/dist-packages/pkg_resources/init.py”, line 3254, in _initialize_master_working_set
working_set = WorkingSet._build_master()
File “/usr/local/lib/python3.6/dist-packages/pkg_resources/init.py”, line 583, in _build_master
ws.require(requires)
File “/usr/local/lib/python3.6/dist-packages/pkg_resources/init.py”, line 900, in require
needed = self.resolve(parse_requirements(requirements))
File “/usr/local/lib/python3.6/dist-packages/pkg_resources/init.py”, line 786, in resolve
raise DistributionNotFound(req, requirers)
pkg_resources.DistributionNotFound: The ‘supervisor==3.3.1’ distribution was not found and is required by the application

Windowsネイティブなマイニングプールを作ってDockerで動くかな 中止 からの 追記①


https://bitcoin20xx.xyz/未来を変える暗号通貨を作っていこう

これまで,UbuntuでDockerを使って,マイニングプール(mposなど含む)を作っていくことをひたすら試行していたのですが,うっかり忘れていました,本来の趣旨は,Windowsで作るってことでしたので,これだと結局Ubuntuで作っているのと全く変わらないのではないかと.

そこで,Windowsネイティブなマイニングプールを作ってDockerで動かすこと試していきます.まず,普通にマイニングプール動かすところまでいかねば...Dockerもよくわかったし,Windows版はライセンスが問題あるかと思うのですが,やってみてもいいでしょうか...

https://github.com/coinfoundry/miningcore

に,マイニングプールを作ってくれるWindows版あったので,これを使ってみます.やることは,このgitに書いてあります.やってみましょう.公開しながら,書き加えていきます.

https://www.atmarkit.co.jp/ait/articles/1702/02/news039.html

で,自分の環境では無理と判明...でっ

Windows版DockerとUbuntuで製作中です。

FROM ubuntu:latest
MAINTAINER SachiO
RUN rm -rf /usr/sbin/policy-rc.d ADD policy-rc.d /usr/sbin/policy-rc.dRUN chmod +x /usr/sbin/policy-rc.d
ADD bitzenyd /bin/bitzenydRUN chmod +x /bin/bitzenyd
RUN mkdir /root/.bitzenyd \ && mkdir /root/.bitzenyd/testnet
ADD bitzeny.conf /root/.bitzent/bizeny.confADD wallet.dat /root/.bitzeny/testnet/wallet.dat
ENV APACHE_RUN_USER="www-data" \ APACHE_RUN_GROUP="www-data" \ APACHE_PID_FILE="/var/run/apache2.pid" \ APACHE_RUN_DIR="/var/run/apache2" \ APACHE_LOCK_DIR="/var/lock/apache2" \ APACHE_LOG_DIR="/var/log/apache2" \ APACHE_USER_UID="0" \ DEBIAN_FRONTEND="noninteractive"
RUN apt-get update -qq \ && apt-get install -y apt-utils perl --no-install-recommends RUN apt-get install -qqy --force-yes \ build-essential \ apache2 \ cron \# libapache2-mod-php \ supervisor \ curl \ openssh-server \ libboost-all-dev \ libcurl4-openssl-dev \ libdb5.3-dev \ libdb5.3++-dev \ mysql-server \ git
RUN apt-get -y update \ && apt-get -y upgrade \ && apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 4F4EA0AAE5267A6C \ # && gpg -a --export 4F4EA0AAE5267A6C \ # && apt-key add - \ && apt-get install -y python3.6 \ && rm /usr/bin/python \ && ln -s /usr/bin/python3.6 /usr/bin/python
RUN wget https://bootstrap.pypa.io/get-pip.py \ && python get-pip.pyRUN apt-get install -y python3-pip \ && ln -s /usr/bin/pip3 /usr/bin/pip
RUN apt-get -y purge php* \ && apt -y autoremove \ && apt autoclean \ && apt-get -y install software-properties-common \ && add-apt-repository -y ppa:ondrej/php \ && apt-get -y install php5.6 \ && apt-get -y install php5.6 php5.6-cgi libapache2-mod-php5.6 php5.6-common php-pear# && apt-get install -y libapache2-mod-php5
RUN pip -VRUN rm -rf /etc/apache2/apache2.conf
ADD apache2.conf /etc/apache2/apache2.confADD apache_default /etc/apache2/sites-available/000-default.conf

https://github.com/sgs01115/TestingAdockerForBitZeny

にて,公開中ですので,随時,最初からの説明を書いていきます.

とりあえず...BuildできたmposのDockerfiles


https://bitcoin20xx.xyz/未来を変える暗号通貨を作っていこう
FROM ubuntu-upstart:latest

MAINTAINER  SachiO

RUN rm -rf /usr/sbin/policy-rc.d 
ADD policy-rc.d /usr/sbin/policy-rc.d
RUN chmod +x /usr/sbin/policy-rc.d

ADD litecoind /bin/litecoind
RUN chmod +x /bin/litecoind

RUN mkdir /root/.litecoin \
    && mkdir /root/.litecoin/testnet3

ADD litecoin.conf /root/.litecoin/litecoin.conf
ADD wallet.dat /root/.litecoin/testnet3/wallet.dat

ENV APACHE_RUN_USER="www-data" \
    APACHE_RUN_GROUP="www-data" \
    APACHE_PID_FILE="/var/run/apache2.pid" \
    APACHE_RUN_DIR="/var/run/apache2" \
    APACHE_LOCK_DIR="/var/lock/apache2" \
    APACHE_LOG_DIR="/var/log/apache2" \
    APACHE_USER_UID="0" \
    DEBIAN_FRONTEND="noninteractive"

RUN apt-get update -qq \
    && apt-get install -y apt-utils perl --no-install-recommends

RUN dpkg-divert --local --rename --add /sbin/initctl \
    && ln -s /bin/true /sbin/initctl

RUN apt-get install -y software-properties-common \
    && apt-get install -y software-properties-common python-software-properties \
    && apt-get -y update \
    && apt-get -y upgrade \
    && apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 4F4EA0AAE5267A6C \
    # && gpg -a --export 4F4EA0AAE5267A6C \
    # && apt-key add - \
    && add-apt-repository ppa:jonathonf/python-3.6 \
    && apt-get -y update \
    && apt-get install -y python3.6 \
    && add-apt-repository ppa:ondrej/php \
    && apt-get -y update \
    && apt-get -y upgrade \
    && apt-cache policy php5.6 \
    && apt-get install -y  libapache2-mod-php5 \
    php5-memcached \
    php5-mysqlnd \
    php5-curl \
    php5-json \
    && apt-get install -qqy --force-yes \
    build-essential \
    apache2 \
    cron \
    pwgen \
    supervisor \
    curl \
    openssh-server \
    libboost-all-dev \
    libcurl4-openssl-dev \
    libdb5.3-dev \
    libdb5.3++-dev \
    git \
    memcached \
    && add-apt-repository ppa:deadsnakes/ppa \
    && apt-get install -y mysql-server-5.5 \
    && apt install -y mysql-server \
    mysql-client
RUN python -V

RUN wget https://bootstrap.pypa.io/get-pip.py \
    && python get-pip.py \
    && python3 get-pip.py

RUN python -V \
    && rm /usr/bin/python \
    && ln -s /usr/bin/python3.6 /usr/bin/python \
    && python -V \
    && ln -s /usr/bin/pip3 /usr/bin/pip

RUN pip3 install -U distribute \
    && pip install -U distribute \
    && rm -rf /etc/apache2/apache2.conf

ADD apache2.conf /etc/apache2/apache2.conf
ADD apache_default /etc/apache2/sites-available/000-default.conf

RUN cd /var/www \
    && git clone git://github.com/MPOS/php-mpos.git mpos \
    && cd mpos \
    && python -V \
    && git checkout master \
    && chown -R www-data templates/compile templates/cache logs \
    && cd /root \
    && python -V \
    && git clone https://github.com/ahmedbodi/stratum-mining.git \
    && cd /root/stratum-mining \
    && python -V \ 
    && git submodule init \
    && git submodule update \
    && cd /root/stratum-mining/externals/litecoin_scrypt \
    && python -V \
#    && apt-get install -y python-dev \
    && apt-get install -y python3-dev \
#    && export CPATH=$CPATH:/usr/include/python2.7/ \
    && export CPATH=:/usr/include/python3.6/ \
    && printenv \
    && python -V \
    && python3 setup.py install \
#    && python2 setup.py install \
    && cd /root/stratum-mining/externals/stratum \
    && printenv \
    && python -V \
    && python3 setup.py install \
#    && python2 setup.py install \
    && mkdir /root/stratum-mining/log

ADD config.py /root/stratum-mining/conf/config.py
ADD global.inc.php /var/www/mpos/include/config/global.inc.php
ADD start-apache2.sh /start-apache2.sh
ADD start-mysqld.sh /start-mysqld.sh
ADD start-cron.sh /start-cron.sh
ADD start-litecoind.sh /start-litecoind.sh
ADD start-stratum.sh /start-stratum.sh
ADD start-memcached.sh /start-memcached.sh

ADD run.sh /run.sh
RUN chmod 755 /*.sh

ADD my.cnf /etc/mysql/conf.d/my.cnf
ADD supervisord-apache2.conf /etc/supervisor/conf.d/supervisord-apache2.conf
ADD supervisord-mysqld.conf /etc/supervisor/conf.d/supervisord-mysqld.conf
ADD supervisord-cron.conf /etc/supervisor/conf.d/supervisord-cron.conf
ADD supervisord-litecoin.conf /etc/supervisor/conf.d/supervisord-litecoin.conf
ADD supervisord-stratum.conf /etc/supervisor/conf.d/supervisord-stratum.conf
ADD supervisord-memcached.conf /etc/supervisor/conf.d/supervisord-memcached.conf

ADD cron /etc/cron.d/cron
RUN chmod 0644 /etc/cron.d/cron \
    && chmod +x /etc/cron.d/cron \
    && rm -rf /var/lib/mysql/*

ADD create_mysql_admin_user.sh /create_mysql_admin_user.sh
RUN chmod 755 /*.sh

RUN a2enmod rewrite \
    && service apache2 restart

ENV PHP_UPLOAD_MAX_FILESIZE="10M" \
    PHP_POST_MAX_SIZE="10M"

RUN mkdir /var/run/sshd \
    && echo 'root:root' |chpasswd \
    && sed -ri 's/^PermitRootLogin\s+.*/PermitRootLogin yes/' /etc/ssh/sshd_config \
    && sed -ri 's/UsePAM yes/#UsePAM yes/g' /etc/ssh/sshd_config \
    && sed -ri 's/from autobahn.websocket import WebSocketServerProtocol, WebSocketServerFactory/from autobahn.twisted.websocket import WebSocketServerProtocol, WebSocketServerFactory/g' /usr/local/lib/python2.7/dist-packages/stratum-0.2.13-py2.7.egg/stratum/websocket_transport.py
ADD supervisord-openssh-server.conf /etc/supervisor/conf.d/supervisord-openssh-server.conf

EXPOSE 80 443 3306 22 3333
CMD ["/run.sh"]

Windows 10 Home, Docker Toolbox

ビルド成功です...次回からはcoindで


https://bitcoin20xx.xyz/未来を変える暗号通貨を作っていこう

今回は,相当ハマりました.ハマりどころは,まず...

1)サンプルとしていたnrpatten/mpos-docker のベース・イメージが旧かったので,ベースイメージを変更するのに手間取った,

これは,いろいろ試した結果, ubuntu-upstart にしました.その結果,追加する場所が増えました.

・apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 4F4EA0AAE5267A6C
・apt-cache policy php5.6

です.この二か所を追加するのに結構訳が分からなくなりました.地道にエラーを潰す感じです.またイメージを変えたことでVirtualBoxのストレージ容量を大きくする必要がありました.

2) python3を入れることを忘れていた.

3)鬼のような依存関係...

4)Docker Quickstart Terminalが,DNSをしばしば見失う.

たった二つのことを潰すのに,すげぇ手間が要りました.かなり勉強になりました.次回からは,coindでイメージを作ります.また,ハマりどころをお知らせします.

Successfully built 153125192b11
Successfully tagged nrpatten/mpos:latest

dockerfileファイルでハマる...その2


https://bitcoin20xx.xyz/未来を変える暗号通貨を作っていこう

以下のdockerfile(エラーの出るところまで)を試行しています.dockerのイメージを作成しているので,基盤OSは,関係と思います.

FROM 1and1internet/ubuntu-16:latest

MAINTAINER xxxxx

RUN rm -rf /usr/sbin/policy-rc.d 
ADD policy-rc.d /usr/sbin/policy-rc.d
RUN chmod +x /usr/sbin/policy-rc.d

ADD litecoind /bin/litecoind
RUN chmod +x /bin/litecoind

RUN mkdir /root/.litecoin \
    && mkdir /root/.litecoin/testnet3

ADD litecoin.conf /root/.litecoin/litecoin.conf
ADD wallet.dat /root/.litecoin/testnet3/wallet.dat

ENV APACHE_RUN_USER="www-data" \
    APACHE_RUN_GROUP="www-data" \
    APACHE_PID_FILE="/var/run/apache2.pid" \
    APACHE_RUN_DIR="/var/run/apache2" \
    APACHE_LOCK_DIR="/var/lock/apache2" \
    APACHE_LOG_DIR="/var/log/apache2" \
    APACHE_USER_UID="0" \
    DEBIAN_FRONTEND="noninteractive"

RUN apt-get update -qq \
    && apt-get install -y apt-utils perl --no-install-recommends

RUN apt-get install -y software-properties-common \
    && apt-get install -y software-properties-common python-software-properties \
    && apt-get -y update \
    && apt-get -y upgrade \
    && add-apt-repository ppa:ondrej/php \
    && apt-get -y update \
    && apt-get -y upgrade \
    && add-apt-repository ppa:jonathonf/python-3.6 \
    && apt -y update \
    && apt install -y python3.6 \
    && apt-get install -qqy --force-yes \
    php5.6 \
    php5.6-cgi \
    build-essential \
    apache2 \
    cron \
    libapache2-mod-php5.6 \
    pwgen \
    supervisor \
    curl \
    openssh-server \
    libboost-all-dev \
    libcurl4-openssl-dev \
    libdb5.3-dev \
    libdb5.3++-dev \
    mysql-server \
    git \
    python3-dev \
    python3-twisted \
    python3-mysqldb \
    python3-setuptools \
    python3-memcache \
    python3-simplejson \
    python3-pylibmc \
    memcached \
    php5.6-memcached \
    php5.6-mysqlnd \
    php5.6-curl \
    php5.6-json

RUN easy_install -U distribute \
    && rm -rf /etc/apache2/apache2.conf

ADD apache2.conf /etc/apache2/apache2.conf
ADD apache_default /etc/apache2/sites-available/000-default.conf

RUN cd /var/www \
    && git clone git://github.com/MPOS/php-mpos.git mpos \
    && cd mpos \
    && git checkout master \
    && chown -R www-data templates/compile templates/cache logs \
    && cd /root \
    && git clone https://github.com/ahmedbodi/stratum-mining.git \
    && cd /root/stratum-mining \
    && git submodule init \
    && git submodule update \
    && cd /root/stratum-mining/externals/litecoin_scrypt \
    && python3 setup.py install \
# ここです!!

    && cd /root/stratum-mining/externals/stratum \
    && python3 setup.py install \
    && mkdir /root/stratum-mining/log
#

以下が,Terminaで出てくるエラーです,

Traceback (most recent call last):
File “setup.py”, line 3, in
use_setuptools()
File “/root/stratum-mining/externals/stratum/distribute_setup.py”, line 145, in use_setuptools
return _do_download(version, download_base, to_dir, download_delay)
File “/root/stratum-mining/externals/stratum/distribute_setup.py”, line 124, in _do_download
to_dir, download_delay)
File “/root/stratum-mining/externals/stratum/distribute_setup.py”, line 194, in download_setuptools
src = urlopen(url)
File “/usr/lib/python3.5/urllib/request.py”, line 163, in urlopen
return opener.open(url, data, timeout)
File “/usr/lib/python3.5/urllib/request.py”, line 472, in open
response = meth(req, response)
File “/usr/lib/python3.5/urllib/request.py”, line 582, in http_response
‘http’, request, response, code, msg, hdrs)
File “/usr/lib/python3.5/urllib/request.py”, line 510, in error
return self._call_chain(args) File “/usr/lib/python3.5/urllib/request.py”, line 444, in _call_chain result = func(args)

ありがちなエラーですが,

File “/usr/lib/python3.5/urllib/request.py”, line 590, in http_error_default
raise HTTPError(req.full_url, code, msg, hdrs, fp)

urllib.error.HTTPError: HTTP Error 403: SSL is required

dockerのイメージ作成中に,適切な修正方法がわかりません.誰かご教授ください.

※ stratum/setup.py 
#!/usr/bin/env python

#たぶん,ここから...distribute_setup.pyは長いので割愛です.

from distribute_setup import use_setuptools
use_setuptools()

#

#python setup.py sdist upload

from setuptools import setup
from stratum import version

setup(name='stratum',
      version=version.VERSION,
      description='Stratum server implementation based on Twisted',
      author='slush',
      author_email='info@bitcion.cz',
      url='http://blog.bitcoin.cz/stratum',
      packages=['stratum',],
      py_modules=['distribute_setup',],
      zip_safe=False,
      install_requires=['twisted', 'ecdsa', 'pyopenssl', 'autobahn',]
)