[解決済み] MySQLのセットアップとDockerfile内のダンプのインポート
2022-05-13 11:21:32
質問
LAMPプロジェクトのためにDockerfileをセットアップしようとしていますが、MySQLを起動する際にいくつかの問題があります。私のDockerfileに次の行があります。
VOLUME ["/etc/mysql", "/var/lib/mysql"]
ADD dump.sql /tmp/dump.sql
RUN /usr/bin/mysqld_safe & sleep 5s
RUN mysql -u root -e "CREATE DATABASE mydb"
RUN mysql -u root mydb < /tmp/dump.sql
しかし、このエラーが出続けています。
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111)
Dockerfileのビルド中にデータベースの作成とダンプのインポートを設定する方法について、何かアイデアはありますか?
どのように解決するのですか?
それぞれ
RUN
の各命令は
Dockerfile
は別のレイヤーで実行されます(説明は
のドキュメントで説明されています。
RUN
).
あなたの
Dockerfile
には、3つの
RUN
の命令があります。問題は、MySQLサーバーが最初の1つでしか起動しないことです。他では MySQL は起動しておらず、そのため
mysql
クライアントで接続エラーが発生します。
この問題を解決するために、2つのソリューションがあります。
解決策1:1行の
RUN
RUN /bin/bash -c "/usr/bin/mysqld_safe --skip-grant-tables &" && \
sleep 5 && \
mysql -u root -e "CREATE DATABASE mydb" && \
mysql -u root mydb < /tmp/dump.sql
解決策2:スクリプトを使用する
実行可能なスクリプトを作成する
init_db.sh
:
#!/bin/bash
/usr/bin/mysqld_safe --skip-grant-tables &
sleep 5
mysql -u root -e "CREATE DATABASE mydb"
mysql -u root mydb < /tmp/dump.sql
これらの行を
Dockerfile
:
ADD init_db.sh /tmp/init_db.sh
RUN /tmp/init_db.sh
関連
-
MySQLデータベース・インデックスの左端一致の原則
-
MySQLにおけるorder byの使用方法の詳細
-
MySQLデータベースで数百万件のデータを10秒間で挿入
-
[解決済み】マルチパート識別子をバインドできませんでした。
-
[解決済み】SQLサーバーのテンポラリーテーブルで「すでに名前のついたオブジェクトがあります」エラーが発生する。
-
Mysql がエラーを報告 オペランドには 1 つのカラムが含まれている必要があります。
-
Mysqlデータベースへのリンク時にpymysqlがConnection refusedエラーを報告する
-
[解決済み] Dockerfileの'COPY'と'ADD'コマンドの違いは何ですか?
-
[解決済み] MySQLでコマンドラインを使用してSQLファイルをインポートするにはどうすればよいですか?
-
[解決済み] DockerfileのCMDとENTRYPOINTの違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
MySQLインストールチュートリアル(Windows用)詳細
-
MySQLで正規表現を使う 詳細
-
Mysqlのソート機能の詳細
-
[解決済み] datetimeの挿入時に文字列から日付や時刻を変換すると、変換に失敗する
-
MySQLの起動エラー:ERROR 2003 (HY000)。localhost'上のMySQLサーバーに接続できない(10061)
-
mysql がエラーを報告します。不明な文字セットです。'utf8mb4'
-
[解決済み] ホストからDockerコンテナにファイルをコピーする方法は?
-
[解決済み] utf8_general_ciとutf8_unicode_ciの違いは何ですか?
-
[解決済み] MySQLデータベースのテーブルのサイズを取得する方法は?
-
[解決済み】Dockerコンテナでスキーマ付きMySQLデータベースを初期化する方法は?