인프라

docker 아파치+php+mysql 웹문서 경로 동기화

소행성왕자 2021. 11. 4. 16:38



# 우분투 설치 Ubuntu 20.04 LTS 이용한 아파치 php mysql  설치기

 

이제 부터 보게 될 예제는 도커를 사용하여 한개의 이미지(Ubuntu 20.04) 와

세개의 컨테이너를 연습하게 될 것입니다.

 

1. 기본 우분투 컨테이너 만들어 apache / php 설치

$ docker pull ubuntu:20.04

# 컨테이너 실행 외부 포트 9000 도커 우분투 아파치 접속 80
$ docker run -i -t -p 9000:80 ubuntu:20.04 /bin/bash

# 아파치 설치
$ apt-get update
$ apt-get install apache2 -y

# 아파치 시작
$ service apache2 start

# 아파치 확인
http://ipip:9000/

# php 설치
$ apt-get install php -y

# vim 설치
$ apt-get install vim -y

# 아파치 재시작
$ service apache2 restart

# 웹문서 저장
$ vi /var/www/html/info.php

# phpinfo 확인
http://ipip:9000/info.php

2. 로컬호스트의 DocumentRoot 와 docker 웹 경로 동기화 (-v)

# DocumentRoot localhost 와 동기화
$ docker run -i -t --name naya_AP -p 9002:80 -v /root/www:/var/www/html/ ubuntu:20.04 /bin/bash

1번 apache + php 설치 후 접속

http://ipip:9002/

3. mysql 추가 버전 컨테이너 만들기

# DocumentRoot localhost 와 동기화
$ docker run -i -t --name naya_APM -p 9004:80 -v /root/www:/var/www/html/ ubuntu:20.04 /bin/bash

1번 apache + php 설치 후

# mysql 설치
$ apt-get install mysql-server -y
$ apt-get install php7.4-mysql -y

# 아파치 재시작
$ service apache2 restart

$ apt-get install systemd -y

# mysql start
$ service mysql restart

# mysql 접속
$ mysql -uroot -p
$ exit

http://ipip:9004/

# 사용자 및 데이터베이스 추가
create database examplegg;
create user 'examplegg'@'localhost' identified by '비밀번호';
create user 'examplegg'@'%' identified by '비밀번호';
grant all privileges on *.* to 'examplegg'@'localhost';
grant all privileges on *.* to 'examplegg'@'%';
flush privileges;

# examplegg 접속
$ mysql -uexamplegg -p examplegg

# 테이블 생성
CREATE TABLE `student_table` (
    `sno` int(11) NOT NULL,
    `name` char(10) DEFAULT NULL,
    `det` char(20) DEFAULT NULL,
    `addr` char(80) DEFAULT NULL,
    `tel` char(20) DEFAULT NULL,
    PRIMARY KEY (`sno`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

# data insert
insert into student_table (sno, name,det,addr,tel) values ('1','hong','1234','seoul','010-0000-2222');

# 웹 에서 mysql 연동 확인

$ vi php_mysql.php
<pre>
<?php

$conn = mysqli_connect(
        'localhost',
        'examplegg',
        '패스워드',
        'examplegg',
);

if(mysqli_connect_errno()) throw new Execption("Failed to connect to Mysql");

$sql = "select * from student_table";
$result = mysqli_query($conn, $sql);
$row = mysqli_fetch_array($result);
print_r($row);

http://ipip:9004/php_mysql.php