programing

install wordpress with cliin docker에서 mariadb 컨테이너와의 "데이터베이스 연결 설정 오류"가 발생합니다.

lovejava 2023. 8. 2. 08:36

install wordpress with cliin docker에서 mariadb 컨테이너와의 "데이터베이스 연결 설정 오류"가 발생합니다.

저는 nginx용 컨테이너 1개, mariadb용 컨테이너 1개, 워드프레스용 컨테이너 1개, 워드프레스용 볼륨 2개를 가지고 도커 구성으로 워드프레스 웹사이트를 만들려고 합니다.

저는 아직 거기에 있지 않습니다. 저는 중간 단계에 있습니다: wp-cli (https://make.wordpress.org/cli/handbook/how-to-install/) 를 사용하여 데이터베이스로 워드프레스를 구성하고 싶지만 오류가 발생합니다:

project architecure :

|_ docker-compose.yml
|_ .env
|_ mariadb/
   |_ Dockerfile
|_ wordpress/
   |_ Dockerfile

wordpress dockerfile : (it's missing steps, like an entrypoint or a cmd, but i'm already getting an error)

FROM debian:buster

RUN apt update && apt install -y \
    php7.3 \
    php7.3-mysqli \
    curl

# install wp-cli : https://make.wordpress.org/cli/handbook/guides/installing/
RUN curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar &&\ 
    chmod +x wp-cli.phar && \
    mv wp-cli.phar /usr/local/bin/wp

ARG WP_DIR=/var/www/html

ARG DB_NAME
ARG DB_USER
ARG DB_PSWD
ARG WP_URL
ARG WP_TITLE
ARG WP_ADMIN
ARG WP_ADMIN_PSWD
ARG WP_ADMIN_EMAIL

# install wordpress with cli : https://make.wordpress.org/cli/handbook/how-to-install/
RUN wp core download --path=${WP_DIR} --allow-root
RUN wp config create --dbname=${DB_NAME} \
                     --dbuser=${DB_USER} \
                     --dbpass=${DB_PASS} \
                     --path=${WP_DIR} \
                     --allow-root \
                     --skip-check
# this command gives an error :
RUN wp core install --url=${WP_URL} \
                    --title=${WP_TITLE} \
                    --admin_user=${WP_ADMIN} \
                    --admin_password=${WP_ADMIN_PSWD} \
                    --admin_email=${WP_ADMIN_EMAIL} \
                    --path=${WP_DIR} \
                    --allow-root

mariadb dockerfile :

FROM debian:buster

ARG DB_NAME
ARG DB_USER
ARG DB_PSWD

RUN apt update && apt install -y \
    mariadb-client \
    mariadb-server \
    && \
    rm -rf /var/lib/apt/lists/*

# configure wp database
RUN service mysql start && \
    mariadb --execute="CREATE DATABASE ${DB_NAME};" && \
    mariadb --execute="CREATE USER '${DB_USER}'@'localhost' IDENTIFIED BY '${DB_PSWD}';" && \
    mariadb --execute="GRANT ALL PRIVILEGES ON ${DB_NAME}.* TO '${DB_USER}'@'localhost' with grant option;"

# start mysql server (https://www.mysqltutorial.org/mysql-adminsitration/start-mysql)
CMD [ "service", "mysql", "start" ]

docker-compose.yml :

version: "3.8"

services:

  mariadb:
    env_file: .env
    build:
      context: ./mariadb
      args:
        - DB_NAME=${DB_NAME}
        - DB_USER=${DB_USER}
        - DB_PSWD=${DB_PSWD}
    image: mariadb
    container_name: mymariadb

  wordpress:
    env_file: .env
    build:
      context: ./wordpress
      args:
        - WP_URL=${WP_URL}
        - WP_TITLE=${WP_TITLE}
        - WP_ADMIN=${WP_ADMIN}
        - WP_ADMIN_PSWD=${WP_ADMIN_PSWD}
        - WP_ADMIN_EMAIL=${WP_ADMIN_EMAIL}
        - DB_NAME=${DB_NAME}
        - DB_USER=${DB_USER}
        - DB_PSWD=${DB_PSWD}
    image: wordpress
    container_name: mywordpress

.env file :

## MARIADB SETUP
DB_NAME=db_wp
DB_USER=db_user
DB_PSWD=db_pswd

## WORDPRESS SETUP
WP_URL=wp_url.fr
WP_TITLE=wp_blog
WP_ADMIN=wp_admin
WP_ADMIN_PSWD=wp_admin_pswd
WP_ADMIN_EMAIL=wp_email@wp.fr

내가 뛰면docker-compose build다음 오류가 발생했습니다.

Error establishing a database connection. This either means that the username and password information in your `wp-config.php` file is incorrect or that contact with the database server at `localhost` could not be established. This could mean your host’s database server is down.

저는 mariadb 컨테이너에서 실행되는 데이터베이스를 프레스 컨테이너라는 단어는 사용할 수 없다고 생각합니다.명시적인 네트워크를 제공하려고 했지만 작동하지 않았습니다.저는 또한 mariadb에 의존하는 워드프레스 빌드를 만들려고 노력했지만 성공하지 못했습니다.

wordpress:
  ...
  depends_on:
    mariadb:
      condition: service_completed_successfully
  ...

빌드 시간 동안 워드프레스를 설치하는 것이 가능한지 모르겠습니다. 실행 시간에 스크립트를 실행해야 할까요?저는 이 모든 것(도커, 워프레스, mariadb, 그리고 이 오류와 관련이 없기 때문에 여기에 보여주지 않은 nginx, php, php-fpm)에 대해 처음이라 확실히 많은 실수를 하고 있습니다, 죄송합니다.

라인이 헷갈립니다.CMD [ "service", "mysql", "start" ]mariadb 도커 파일에서는 제대로 작동하지 않습니다. 제가 컨테이너를 실행하면 5~6초 동안 작동한 후 종료됩니다.하지만 내가 사용한다면,CMD [ "mysqld" ]대신 잘 작동합니다. 왜 그런지는 모르겠지만요.하지만 워드프레스 설치와 관련된 나의 문제와는 관련이 없는 것 같습니다.

언급URL : https://stackoverflow.com/questions/73744266/install-wordpress-with-cli-in-docker-gives-error-establishing-database-connecti