2016-03-28 8 views
0

私の目標は、Docker ContainerでPercona XtraDBのインストールを実行することです。 これは私が書いた以下の構成です。DockerのPercona Xtradb Clusterをブートストラップするとエラーが発生します。特権テーブルを開くことができません:テーブル 'mysql.user'が存在しません。

Dockerfile:

FROM ubuntu:wily 
ENV DEBIAN_FRONTEND noninteractive 
# 
# ENVIRONMENT INSTALL 
# 
RUN apt-get update && apt-get upgrade -y && apt-get dist-upgrade -y && apt-get install -y wget curl netcat python-dev python-setuptools python-software-properties vim 
RUN easy_install j2cli 
COPY my.cnf.j2 /templates/ 
COPY docker-entrypoint.sh/
RUN chmod +x docker-entrypoint.sh/
# 
# PERCONA XTRADB CLUSTER INSTALL 
# 
RUN echo "deb http://repo.percona.com/apt wily main" >>  /etc/apt/sources.list.d/percona.list 
RUN echo "deb-src http://repo.percona.com/apt wily main" >>  /etc/apt/sources.list.d/percona.list 
RUN apt-key adv --keyserver keys.gnupg.net --recv-keys 1C4CBDCDCD2EFD2A 
RUN apt-get update && apt-get install -y percona-xtradb-cluster-56 
ENTRYPOINT ["/docker-entrypoint.sh"] 

docker-entrypoint.sh

#!/bin/bash -e 
j2 /templates/my.cnf.j2 > /etc/mysql/my.cnf 
exec bash 

my.cnf.j2

[mysqld] 
user=mysql 
default_storage_engine=InnoDB 
basedir=/usr 
datadir=/var/lib/mysql 
socket=/var/run/mysqld/mysqld.sock 
innodb_autoinc_lock_mode=2 
log_queries_not_using_indexes=1 
max_allowed_packet=128M 
binlog_format=ROW 
wsrep_provider=/usr/lib/libgalera_smm.so 
wsrep_node_address={{node_ip}} 
wsrep_cluster_name="mycluster" 
wsrep_cluster_address=gcomm:// 
wsrep_node_name={{node_name}} 
wsrep_sst_method=xtrabackup-v2 
wsrep_sst_auth="test:test" 

!includedir /etc/mysql/conf.d/ 

wsrep_cluster_address = gcomm://は、通常3ノードのリストを保持していますWAN-IP、私はプライバシーのためにそれらを削除しました。

docker build --rm -t test . 

始動はしても正常に動作します:イメージの構築

はと完全に正常に動作します私のサーバーのWAN-IPで

docker run --name Test1 -e "node_ip=127.0.0.1" -e "node_name=Test1" -p 3306:3306 -p 4567:4567 -p 4444:4444 -p 4568:4568 -i -t test 

変数node_ipポイント、私は127.0に設定します.0.1プライバシーの理由から。

しかし、私はコンテナにMySQLをブートストラップしようとすると:

2016-03-28 09:24:09 354 [Note] Server hostname (bind-address): '*'; port: 3306 
2016-03-28 09:24:09 354 [Note] IPv6 is available. 
2016-03-28 09:24:09 354 [Note] - '::' resolves to '::'; 
2016-03-28 09:24:09 354 [Note] Server socket created on IP: '::'. 
2016-03-28 09:24:09 354 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.user' doesn't exist 
160328 09:24:09 mysqld_safe mysqld from pid file /var/lib/mysql/8605688929d8.pid ended 

がどのように私はこれが私のコンテナで実行されているXtraDBを取得するために解決することができます:

/etc/init.d/mysql bootstrap-pxc 

私はこのエラーを取得しますか?

+0

afaictあなたはmysql_install_dbを実行していませんが、これには何らかの理由がありますか? (それは実行する必要がありますし、chown mysql.mysql -R/var/lib/mysql) – Oneiroi

答えて

0

権限の問題である可能性があります。あなたのFROMなステートメントの後に次を追加してみてください:

RUN useradd mysql \ 
    && mkdir /var/lib/mysql \ 
    && chown -R mysql:mysql /var/lib/mysql 
+0

悲しいことに、私はまだ同じ問題を抱えていませんでした。 –

1

mysql_install_db chown mysql.mysql -R /var/lib/mysql service mysql start

上記問題なく動作しているように見えます、それをテストしてください。

関連する問題