Docker-composeとmysqlに問題があります:
docker-compose.yml
version: '2'
services:
db:
image: mysql
volumes:
- "./sito/db/:/var/lib/mysql"
ports:
- "3306:3306"
restart: always
environment:
MYSQL_ROOT_PASSWORD:
app:
depends_on:
- db
image: eboraas/Apache-php
links:
- db
ports:
- "80:80"
volumes:
- ./sito/:/var/www/html/
このコンテナを作成するとエラーが発生しました:
Recreating phpapp_phpapache_1
Attaching to phpapp_db_1, phpapp_phpapache_1
db_1 | error: database is uninitialized and password option is not specified
db_1 | You need to specify one of MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD and MYSQL_RANDOM_ROOT_PASSWORD
phpapache_1 | AH00558: Apache2: Could not reliably determine the server's fully qualified domain name, using 172.30.0.3. Set the 'ServerName' directive globally to suppress this message
phpapp_db_1 exited with code 1
db_1 | error: database is uninitialized and password option is not specified
db_1 | You need to specify one of MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD and MYSQL_RANDOM_ROOT_PASSWORD
db_1 | error: database is uninitialized and password option is not specified
db_1 | You need to specify one of MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD and MYSQL_RANDOM_ROOT_PASSWORD
db_1 | error: database is uninitialized and password option is not specified
db_1 | You need to specify one of MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD and MYSQL_RANDOM_ROOT_PASSWORD
db_1 | error: database is uninitialized and password option is not specified
ただし、データベースにはパスワードがありません。どうすれば解決できますか?
ドキュメント の代わりに、MYSQL_ROOT_PASSWORD:
を使用する必要があります-および=また使用する必要があります「パスワード」結果は次のようになります。
- MYSQL_ROOT_PASSWORD=some_password
あなたの例では:
version: '2'
services:
db:
image: mysql
volumes:
- "./sito/db/:/var/lib/mysql"
ports:
- "3306:3306"
restart: always
environment:
- MYSQL_ROOT_PASSWORD=some_password
MYSQL_ROOT_PASSWORD
を何も設定していないようです。ドキュメントごとに、それが必要です。
https://hub.docker.com/_/mysql/
MYSQL_ROOT_PASSWORD
この変数は必須であり、MySQLルートスーパーユーザーアカウントに設定されるパスワードを指定します。
MYSQL_ROOT_PASSWORD
の値を指定しないと、問題が発生します(他のケースについては以下で説明します)。
以下の構文のいずれかを使用できます。
# syntax 1
environment:
MYSQL_ROOT_PASSWORD: strongrootpassword
# syntax 2
environment:
- MYSQL_ROOT_PASSWORD=strongrootpassword
空白/空のパスワードを使用する場合は、次を使用します。
MYSQL_ALLOW_EMPTY_PASSWORD=1
ランダムパスワードを設定する場合は、次を使用します。
MYSQL_RANDOM_ROOT_PASSWORD=1
その後、次を使用して生成されたパスワードを取得できます
docker logs container_name_or_id
最後に、MySQLイメージのエントリポイントに従って、MYSQL_ROOT_PASSWORD
、MYSQL_ALLOW_EMPTY_PASSWORD
、およびMYSQL_RANDOM_ROOT_PASSWORD
の[〜#〜] one [〜#〜] one [〜#〜]を指定する必要があります。
-z
は、変数が空でないことを確認しますif [ -z "$MYSQL_ROOT_PASSWORD" -a -z "$MYSQL_ALLOW_EMPTY_PASSWORD" -a -z "$MYSQL_RANDOM_ROOT_PASSWORD" ]; then
echo >&2 'error: database is uninitialized and password option is not specified '
echo >&2 ' You need to specify one of MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD and MYSQL_RANDOM_ROOT_PASSWORD'
exit 1
fi