도커로 그누보드 설치하기 #1 > Docker

Docker

도커로 그누보드 설치하기 #1 정보

도커로 그누보드 설치하기 #1

본문

차근 차근 배워가면서 그누보드까지 설치해 보기입니다.

그누보드에 필요한 링크 글을 번역해 가면서,  그누보드 설치해 보겠습니다.

따라 해보시고 궁금한점은 댓글로...

 

 

컨테이너 기술은 나날이 성장하고 있습니다. 애플리케이션 개발을 훨씬 쉽고 빠르게 만드는 기술입니다. 애플리케이션을 이미지라는 더 작은 서비스로 분할하여 애플리케이션 서비스가 리소스를 지속 가능하게 활용하도록 하는 깔끔한 아키텍처를 가지고 있습니다. 이렇게 하면 다른 서비스가 실행되는 방식에 영향을 주지 않고 각 서비스를 독립적으로 설정할 수 있습니다.​

이 경우 Docker에서 제공하는 docker-compose 파일 모든 애플리케이션 환경을 설정하고 몇 가지 명령을 실행하여 보다 우아하고 빠른 접근 방식으로 애플리케이션을 완전히 설정할 수 있습니다.​

PHP 애플리케이션을 실행하는 경우를 살펴보겠습니다. PHP 스크립트를 실행하는 데 필요한 모든 환경을 설치해야 합니다. 서버/시스템에 설치된 아파치 서버와 아마도 MySQL 데이터베이스가 필요합니다. 그런 다음 PHP 기반 웹사이트를 실행할 수 있는 방식으로 각 환경을 설정합니다.​

Docker를 사용하면 훨씬 더 관리하기 쉽습니다. Docker를 사용하면 마이크로 서비스로 실행되는 각 서비스로 애플리케이션을 설정할 수 있습니다. 이런 식으로 애플리케이션이 실행해야 하는 모든 서비스를 격리하는 단일 YML 파일을 설정합니다. 이 파일은 PHP Apache 서버와 MySQL 데이터베이스를 설정합니다. 애플리케이션을 실행하는 데 필요한 매개변수를 지정하기만 하면 됩니다.​

컨테이너가 제공하는 주요 이점은 애플리케이션 서비스를 실행할 수 있는 확장 가능한 환경입니다. 이를 통해 팀 전체에서 지속적 통합 및 지속적 전달(CI/CD) 파이프라인의 관행이 향상됩니다. 따라서 이 YML 파일을 모든 팀원과 공유하기만 하면 됩니다. 이렇게 하면 실행 중인 운영 체제에 관계없이 팀 전체에 필요한 모든 환경이 설정됩니다. 따라서 팀 구성원은 코드를 손상시키지 않고 작업을 동기화할 수 있습니다.​

​이 가이드에서는 Docker 개발 환경을 사용하여 다음을 수행하는 방법을 보여줍니다.​

  • 로컬 PHP Apache 서버 인스턴스를 설정하고 실행합니다.​
  • ​동적 PHP 기반 웹사이트를 제공합니다.​
  • MySQL 데이터베이스를 설정하여 SQL 스크립트를 실행하고 레코드를 가져와 PHP 기반 웹사이트에서 인쇄합니다.​

​Docker 허브 이미지를 사용하여 컨테이너화된 PHP 개발 환경을 설정합니다.​

사전지식

  • Docker Desktop이 컴퓨터에 설치되어 있는지 확인하십시오.
  • PHP 및 SQL 쿼리에 대한 기본 지식.
  • Docker 파일에서 Docker 허브 이미지 빌드 및 실행 방법에 대한 기본적인 설명.
  • 컨테이너의 작동 방식을 이해합니다.
  • Docker 및 docker-compose 명령 실행 방법에 대한 기본 지식.

도커가 동작하는지 테스트

Docker 데몬을 다운로드하여 설치한 후 Docker 엔진을 열고 엔진이 실행 중인지 확인하십시오.​

3556183104_1665270900.3678.png

명령줄을 열고 다음 명령을 실행하여 Docker가 컴퓨터에 올바르게 설치되었는지 확인합니다.​


docker version​

이 명령줄 로그와 거의 유사한 결과를 기록합니다.​

3556183104_1665271612.9672.png

Docker의 초보자인 경우 위의 명령을 실행하는 동안 이 Docker 엔진 오류가 발생할 수 있습니다.​

3556183104_1665271636.3824.png

이 문제를 해결하려면 Docker 데스크톱 엔진으로 이동하여 문제를 해결하고 Docker를 공장/기본 설정으로 재설정하십시오.​

3556183104_1665271655.777.png

docker version 명령을 실행하면 이제 제대로 작동합니다. 그리고 문제가 지속되면 Docker 엔진을 올바르게 설정하는 데 필요한 방법을 검색하고 찾으십시오.​

우리는 처음부터 시작합니다. Docker 엔진에서 실행 중인 컨테이너와 이미지가 없는지 확인하십시오. 사용 가능한 컨테이너를 확인하려면 docker container ls를 실행하세요. Docker 컨테이너를 제거하려면 docker container rm <컨테이너 이름>을 실행합니다. 실행 중인 컨테이너가 없는지 확인합니다.​

3556183104_1665271688.9115.png

docker-compose YML 파일 만들기

Docker-compose를 사용하면 애플리케이션에서 실행하려는 필수 이미지의 매개변수를 설정할 수 있습니다. 우리의 경우 PHP Apache와 같은 Docker 허브 공식 이미지를 사용합니다. 및 MySQL. 매개변수를 .yml 파일에 작성합니다. .yaml도 작동합니다.​

계속해서 프로젝트 폴더를 만들고 그 폴더 안에 .yml 파일을 만듭니다.​

예를 들어 docker-compose.yml입니다.​

docker-compose를 설정하려면 먼저 사용하려는 Docker version 서비스를 선택해야 합니다. 제공하려는 컨테이너와 실행하려는 컨테이너.​


version: '3.8'
services:
  php-apache-environment:
    container_name:​

​로컬 PHP Apache 서버 인스턴스 설정 및 실행

​PHP Apache 컨테이너를 설정하려면 다음 환경을 지정해야 합니다.​

  • container_name - 이것은 PHP 컨테이너의 이름을 지정하려는 임의의 이름입니다.​

예를 들어 container_name: php-apache.​

  • 컨테이너 이미지 - 사용하고자 하는 PHP Apache 버전인 공식 PHP 이미지입니다. 이 경우 Docker 허브에서 image: php:8.0-apache를 가져옵니다.​
  • volume - 코드/소스 파일에 대해 현재 작업 중인 src 디렉토리를 설정합니다. PHP 스크립트를 실행하려면 해당 파일이 해당 디렉토리에 있어야 합니다.​

    아래와 같습니다:

   

    volumes: - ./gnuboard:/var/www/html/​
    
  • 포트 번호. 이것은 스크립트가 실행될 포트를 정의합니다. 로컬 컴퓨터의 포트에 대한 Apache 서버 포트 매핑을 설정합니다.​

    예를 들어:​

   

    ports: - 8000:80​
    

이것은 우리가 포트 80을 노출하도록 Apache 서버를 설정하고 있음을 의미합니다. 포트 8000은 PHP 스크립트에 도달하고 Docker 컨테이너 내에서 브라우저에서 실행합니다.​

이것이 docker-compose.yml의 모습입니다.​


version: '3.8'
services:
  php-apache-environment:
    container_name: php-apache
    image: php:8.0-apache
    volumes:
      - ./gnuboard:/var/www/html
    ports:
      - 8000:80

테스트해 보겠습니다. 계속해서 docker-compose up을 실행하십시오. 모든 정보를 가져오고, Apache 서버를 다운로드하고, 이미지를 빌드하고, 컨테이너를 실행합니다.​

3556183104_1665272222.1568.png

Docker 데스크톱 엔진을 열면 컨테이너가 실행 중이어야 합니다.​

3556183104_1665272323.9326.png

컨테이너가 PHP 스크립트를 실행하도록 설정되었는지 확인하려면 브라우저에서 정의된 로컬 호스트 게시물을 엽니다(예: http://localhost:8000/).​

3556183104_1665272364.6128.png

이것은 컨테이너가 일부 PHP 기반 코드를 실행하도록 설정되었음을 보여줍니다.​

PHP 기반 웹사이트 만들어봅니다.

이제 일부 PHP 코드를 실행하고 브라우저에서 출력을 가져옵니다. docker-compose의 볼륨에 정의한 디렉토리에서 스크립트를 실행합니다.​

이 경우 ./gnuboard를 사용합니다.​

프로젝트 디렉토리 ➙ ./gnuboard로 이동하여 index.php 파일을 만들고 PHP 스크립트 작성을 시작합니다.​

3556183104_1665272502.3128.png

간단한 index.php 스크립트.​


<?php
echo "Hello there, this is a PHP Apache container";
phpinfo()
?>

브라우저(http://localhost:8000/)에서 새로 고침하면 이 간단한 PHP 드라이브 웹사이트의 결과가 표시됩니다.​

3556183104_1665272622.917.png
 

축하합니다! 이제 컨테이너화된 PHP 웹사이트가 생겼습니다.​

MySQL 데이터베이스 컨테이너 설정

웹 사이트와 상호 작용할 데이터베이스를 설정하고 싶을 것입니다. PHP 컨테이너 내에서 MySQL 지원을 제공하는 또 다른 서비스를 만들 것입니다.​

docker-compose.yml 파일에 MySQL 서비스를 추가해 봅시다. MySQL을 설정하려면 다음과 같은 일부 환경을 사용자 정의해야 합니다.​

  • 비밀번호 인증. MySQL 서버를 사용하고 액세스하려면 정의된 MySQL 서버 및 데이터베이스와 같은 서비스에 액세스할 수 있는 인증 환경을 설정해야 합니다. MYSQL_USER: MYSQL_USER 및 MYSQL_PASSWORD: MYSQL_PASSWORD를 사용하여 MySQL에 연결하고 MYSQL_DATABASE: MYSQL_DATABASE에 액세스합니다.​
  • `restart: always​`으로 설정된 다시 시작 정책. 정의된 구성이 변경될 때마다 서비스가 다시 시작됩니다.​

  db:
    container_name: db
    image: mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: MYSQL_ROOT_PASSWORD
      MYSQL_DATABASE: MY_DATABASE
      MYSQL_USER: MYSQL_USER
      MYSQL_PASSWORD: MYSQL_PASSWORD
    ports:
      - 9906:3306

두 서비스(db 및 php-apache)가 올바르게 작동하려면 PHP 컨테이너 내부에 일부 MySQL 지원 도구를 추가해야 합니다. 이 도구에는 mysqli가 포함되어 있습니다.​

프로젝트 디렉토리 내에서 /php 폴더로 이동하여 Docker 파일을 만들고 이름을 Dockerfile로 지정하고 다음 PHP 구성을 추가합니다.​


FROM php:8.0-apache
RUN docker-php-ext-install mysqli && docker-php-ext-enable mysqli
RUN apt-get update && apt-get upgrade -y​

여기에서 사용자 정의 PHP Apache 이미지와 PHP Apache를 MySQL 서버에 연결하는 PHP 확장인 mysqli를 설치할 환경을 만들었습니다.​

이제 docker-compose.yml 파일의 php-apache 서비스 내부에 이 사용자 정의 이미지를 빌드해야 합니다. PHP Apache는 또한 MySQL에 연결하기 위해 db 서비스에 의존합니다. depends_on: 환경을 지정하여 구성해야 합니다.​

이것이 docker-compose.yml 파일의 모양입니다.​


version: '3.8'
services:
  php-apache-environment:
    container_name: php-apache
    build:
      context: ./php
      dockerfile: Dockerfile
    depends_on:
      - db
    volumes:
      - ./gnuboard:/var/www/html
    ports:
      - 8000:80
  db:
    container_name: db
    image: mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: MYSQL_ROOT_PASSWORD
      MYSQL_DATABASE: MYSQL_DATABASE
      MYSQL_USER: MYSQL_USER
      MYSQL_PASSWORD: MYSQL_PASSWORD
    ports:
      - 9906:3306

docker-compose up을 실행하여 MySQL 환경을 가져오고 설정합니다. MySQL이 컨테이너에 추가됩니다.​

3556183104_1665274441.1904.png

PHP 스크립트를 사용하여 SQL 쿼리 실행

컨테이너가 예상대로 작동하는지 테스트해 봅시다. index.php 파일과 다음 PHP MySQL 연결 코드로 이동합니다.​


<?php
//These are the defined authentication environment in the db service
 
// The MySQL service named in the docker-compose.yml.
$host = 'db';
 
// Database use name
$user = 'MYSQL_USER';
 
//database user password
$pass = 'MYSQL_PASSWORD';
 
// check the MySQL connection status
$conn = new mysqli($host, $user, $pass);
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} else {
    echo "Connected to MySQL server successfully!";
}
?>

파일을 저장하고 http://localhost:8000/ 웹 주소를 새로 고칩니다.​

3556183104_1665275092.2964.png

이제 PHP Apache 및 MySQL 환경이 설정되었으며 PHP 기반 애플리케이션 개발을 시작하고 MySQL 서버와 통신할 수 있습니다.​

PHPMyAdmin​ 설치하기

이제 MySQL 연결이 정상입니다. MySQL 데이터베이스에서 일부 데이터를 가져와 PHP 스크립트를 사용하여 웹 페이지에 표시하는 방법을 살펴보겠습니다.​

애플리케이션이 데이터베이스와 상호 작용한다고 가정합니다. 데이터와 상호 작용할 인터페이스를 원할 것입니다. MySQL 데이터베이스와 상호 작용할 수 있는 인터페이스를 제공하기 위해 PHPMyAdmin 서비스를 추가할 것입니다.​

아래와 같이 PHPMyAdmin 서비스를 추가해 봅시다.​


  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    ports:
      - 8080:80
    restart: always
    environment:
      PMA_HOST: db
    depends_on:
      - db

브라우저에서 http://localhost:8080/을 열어 PHPMyAdmin에 액세스합니다.​

3556183104_1665275626.5624.png

Phpmyadmin 패널에 로그인하려면 사용자 이름을 root로, 비밀번호를 MYSQL_ROOT_PASSWORD로 사용합니다. 비밀번호는 이미 MySQL 환경 변수에 설정되어 있습니다(MYSQL_ROOT_PASSWORD: MYSQL_ROOT_PASSWORD).​

3556183104_1665275657.2893.png

이제 정의한 데이터베이스가 이미 MYSQL_DATABASE로 설정되어 있고 Phpmyadmin과 상호 작용할 수 있습니다.​

레코드를 가져와 PHP 기반 웹사이트에서 보기

데이터베이스 테이블을 만들고 일부 레코드를 채웁니다. 데이터베이스를 선택하고 다음 쿼리를 실행합니다.​


drop table if exists `users`;
create table `users` (
    id int not null auto_increment,
    username text not null,
    password text not null,
    primary key (id)
);
insert into `users` (username, password) values
    ("admin","password"),
    ("Alice","this is my password"),
    ("Job","12345678");

3556183104_1665276681.7335.png

계속해서 PHP로 SQL 선택 쿼리를 작성하십시오.​


<?php
//These are the defined authentication environment in the db service
 
// The MySQL service named in the docker-compose.yml.
$host = 'db';
 
// Database use name
$user = 'MYSQL_USER';
 
//database user password
$pass = 'MYSQL_PASSWORD';
 
// database name
$mydatabase = 'MYSQL_DATABASE';
// check the mysql connection status
 
$conn = new mysqli($host, $user, $pass, $mydatabase);
 
// select query
$sql = 'SELECT * FROM users';
 
if ($result = $conn->query($sql)) {
    while ($data = $result->fetch_object()) {
        $users[] = $data;
    }
}
 
foreach ($users as $user) {
    echo "<br>";
    echo $user->username . " " . $user->password;
    echo "<br>";
}
?>

결과를 보려면 http://localhost:8000/을 새로고침하세요.​

 

3556183104_1665276727.244.png

다음은 그누보드를 설치해 보겠습니다.

추천
3

댓글 6개

@들레아빠 대략적인 계획입니다. https://sir.kr/cm_free/1644539  잘될지는 모르겠지만,
항상 하다 보면, 모르는 것에 막히면, 힘이 빠져서..
용두사미가 되네요.

몇개월후에 다시 보면,  조금 실력이 늘어서 막힌 것이 풀린 것 같은데,
그땐 이미 이전에 했던 것을 다시해야 된다는 문제가..(돌아서면 잊어버리는)
전체 23 |RSS
Docker 내용 검색

회원로그인

진행중 포인트경매

  1. 참여6 회 시작24.04.25 20:23 종료24.05.02 20:23
(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT