1. ๊ธ์ ์์ฑํ๋ ์ด์
AWS EC2๋ฅผ ์ฌ์ฉํ๋ฉด์ RDS๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ฌด ๋ง์ ๋น์ฉ์ด ๋ค์ด EC2์ MySQL์ ์ฐ๊ฒฐ ๋ฐ Apache ๊ฐ๋ฐ ํ๊ฒฝ์ ๊ตฌ์ถํ๋ ์๊ฐ์ ๊ฐ์ง๋ ค๊ณ ํฉ๋๋ค.
๊ธฐ์กด์ ๋ด์ฉ๊ณผ ์ค๋ณต๋๋ ๋ด์ฉ์ด ์๊ธฐ ๋๋ฌธ์ ์ด์ ์ ์์ฑํ ๋ธ๋ก๊ทธ๋ฅผ ์ฐธ๊ณ ํ์ฌ ํ์๋ฉด ์ข๋ค๊ณ ์๊ฐํฉ๋๋ค.
2. Aphache ์๋ฒ ๊ตฌ์ถํ๊ธฐ
Dockerfile ์์ฑํ๊ธฐ
ubuntu@ip-172-31-32-99:~$ mkdir example
ubuntu@ip-172-31-32-99:~$ cd example/
ubuntu@ip-172-31-32-99:~/example$ sudo vi Dockerfile
ubuntu@ip-172-31-32-99:~/example$ cat Dockerfile
FROM ubuntu:20.04
MAINTAINER Kimmugeon <xxxx@email.com>
# Avoding user interaction with tzdata
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update
RUN apt-get install -y apache2 #install Apache web server (Only 'yes')
RUN apt-get install -y software-properties-common
RUN add-apt-repository ppa:ondrej/php # For Installing PHP 5.6
RUN apt-get update
RUN apt-get install -y php5.6
EXPOSE 80
CMD ["apachectl", "-D", "FOREGROUND"]
FROM : ๋ฒ ์ด์ค ์ด๋ฏธ์ง ์ง์ / ๋ด๊ฐ ๋ง๋ ์ด๋ฏธ์ง๋ ๊ฐ๋ฅ
MAINTAINER : ๊ฐ๋ฐ์ ์ ๋ณด๋ฅผ ๋ํ๋, ๋ณดํต ๊ฐ๋ฐ์ ์ด๋ฉ์ผ์ ์ ์.
RUN : ๋ช
๋ น์ด ์คํ. -y : ๊ผญ ๋ฃ์ด์ฃผ๊ธฐ
EXPOSE : ์ปจํ
์ด๋๋ก ์คํ ์ ๋
ธ์ถ์ํฌ ํฌํธ. ๋จ์ํ ํด๋น ํฌํธ๋ฅผ ์ฌ์ฉํ๋ค๋ ๊ฒ์ ๋ช
์ํ๋ ๊ฒ. ์ด๋ฅผ ์ฌ์ฉํด๋ run ๋ช
๋ น์ด(๋์ปค ์คํ)์์ -P ์ต์
๋ ํ์
CMD : ์ปจํ
์ด๋๊ฐ ์์๋ ๋๋ง๋ค ์คํํ ๋ช
๋ น์ด๋ฅผ ์ค์ . Dockerfile์์ ํ ๋ฒ๋ง ์ฌ์ฉ ๊ฐ๋ฅ.
์ด๋ ๊ฒ ์ค์ ํ๊ณ ๋น๋ํ๋ฉด ์ํ์น2 + PHP ์๋ฒ๋ฅผ ๊ตฌ์ถํ๋ค.
ENV DEBIAN_FRONTEND=noninteractive
์์ ๋ช ๋ น์ด๋ฅผ ์ค์ ํ๋ ์ด์ ๋ ๋ค์๊ณผ ๊ฐ์ ์ค์ ์ ์ฌ๋ผ์ง๊ฒ ํ๊ณ ์ค์น๋ฅผ ํ๊ฒ ํด ์ค๋ค.
Please select the geographic area in which you live. Subsequent configuration
questions will narrow this down by presenting a list of cities, representing
the time zones in which they are located.
1. Africa 4. Australia 7. Atlantic 10. Pacific 13. Etc
2. America 5. Arctic 8. Europe 11. SystemV
3. Antarctica 6. Asia 9. Indian 12. US
Geographic area:
์ดํ Apache ์๋ฒ ํ์ด์ง๋ฅผ ์คํ์ ์ํค๋ฉด ๋ค์๊ณผ ๊ฐ์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ๋ฉด ๋๋ค.
docker run -p 80:80 -v /home/ubuntu/example/html:/var/www/html example
ubuntu@ip-172-31-32-99:~/example/html$ sudo vi index.php
# php ๊ธฐ๋ณธ์ ๋ณด ์ถ๋ ฅํ๋ค๋ ๋ป
<?php phpinfo(); ?>
ํด๋น ๋ช ๋ น์ด๋ฅผ ์คํํ๋ฉด ํด๋น php info ํ์ด์ง๋ฅผ ๋ธ๋ผ์ฐ์ ์์ ํ์ธ์ด ๊ฐ๋ฅํ๋ค.
3. MySQL ์๋ฒ ๋ง๋ค๊ธฐ
๋ณดํต AWS EC2๋ฅผ ์ฌ์ฉํ๋ฉด ๋ณด์์ ์ธ ์ธก๋ฉด ๋๋ฌธ์ RDS๋ฅผ ์ฌ์ฉํ๋ค. ํ์ง๋ง ์ด๋ฌํ ๊ฒฝ์ฐ ๋น์ฉ์ ์ธ ์ธก๋ฉด์ด ์ทจ์ค์์ผ๋ก ๋ถ๋ด์ด ๋์ด EC2์ MySQL์ ์ง์ ์ค์นํ๋ ๋ฐฉ์์ ํ์ต์ ํ์ต๋๋ค.
Docker์ ์๋ MySQL์ด ์๊ธฐ ๋๋ฌธ์ ๋ฐ๋ก ์คํ์ด ๊ฐ๋ฅํ๋ค.
์ผ๋จ MySQL.8.0 ์๋์ฐ ๊ธฐ์ค์ผ๋ก ์คํ์ ํ๊ฒ ์ต๋๋ค.
docker run \
--name mysql_8.0 \
-d \
--restart unless-stopped \
-e MYSQL_ROOT_PASSWORD=1234 \
-e TZ=Asia/Seoul \
-p 9898:3306 \
-v //mysql//conf.d://etc//mysql//conf.d \
mysql:8.0.22 \
--character-set-server=utf8mb4 \
--collation-server=utf8mb4_unicode_ci
ํฌํธ ๊ฒฝ์ฐ์๋ ๊ธฐ์กด์ 3306์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ธ๋ฐ์ด๋ ๊ท์น์ ์๋กญ๊ฒ ๋ง๋ค์๋ค. ์ผ๋จ ๊ธฐ๋ณธ์ ์ผ๋ก 9898๋ก ์ค์ ์ ํ๊ฒ ์ต๋๋ค.
์ดํ ๋ค์๊ณผ ๊ฐ์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ๋ฉด ์คํ์ ํ์ธํ๋ค.
docker ps
// ์คํํ๊ธฐ
docker exec -it [์ปจํ
์ด๋ ID] bin/bash
MySQL์ ์คํ์ ์์ผ๋ณด๊ฒ ์ต๋๋ค.
mysql -u root -p [password]
# mysql -u [user] -p -h [host์ฃผ์]
# mysql -h [host์ฃผ์] -u [user] -p
mysql> CREATE DATABASE TEST;
mysql> SHOW DATABASES;
mysql> USE [database];
์ดํ EC2์ ์ค์นํ MySQL ์ปจํ ์ด๋๋ฅผ ์ค์น๋ฅผ ํด์ผ์ง ์ ์์ด ๊ฐ๋ฅํ๋ค.
sudo apt install mysql-client-core-8.0
์ค์น๋ฅผ ํ๊ณ EC2์ ํ๋ ฅ์ IP๋ฅผ ์ค์ ํ๊ณ ํฌํธ๋ฅผ 9898์ ์ ๋ ฅ์ ํ๋ค.
4. MySQL DB ๊ถํ ์ค์ ํ๊ธฐ
CREATE USER 'kimmugeon'@'%' IDENTIFIED BY '1234'
GRANT ALL PRIVILEGES ON *.* TO 'kimmugeon'@'%';
FLUSH PRIVILEGES;
QUIT
EXIT
5. ์ฐธ๊ณ
'๐ AWS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ Jenkins ] Jenkins Pipeline์ ์ด์ฉํ CI/CD + SSHAgent (0) | 2023.04.23 |
---|---|
[ Jenkins ] Jenkins FreeStyle Github ๋ฐฐํฌํ๊ธฐ (0) | 2023.04.21 |
[ Jenkins ] Jenkins Item Freestyle CI/CD ๋ฐฐํฌ (0) | 2023.04.19 |
[ Jenkins ] Jenkins CI/CD ๋ฌด์์ธ๊ฐ? (0) | 2023.04.15 |
[ AWS ] AWS๋ ์นํด์ง๊ธฐ - 3 (Docker๋ฅผ ์ด์ฉํด์ ๋ฐฐํฌํ๊ธฐ) (0) | 2023.04.07 |