TODO
도커 컴포즈 파일로 컨테이너 올려보기
mariaDB→wordpress→nginx 순서
•
query문에서 localhost 부분을 %로 바꿔주니까 wordpress 화면 뜸!
→ ft_server에서는 한 컨테이너에서만 하니까 다 localhost에서 접속했는데, 이번에는 컨테이너가 다르기 때문에 %로 외부에서도 접근이 가능하도록 해줘야 함!
워드프레스 블로그 뜨게→wp-admin 을 commandline으로 해주기
mariadb volume 설정하기
환경변수 설정
.env파일 만들기
dns lookup
pid는 뭘까?
exec 활용해서 전부 pid 1로 설정 완료!
내부적으로는, 예를들어/bin/ls를 실행 할 경우fork()를 호출하여서 자식 프로세스를 만든 후에 생성된 자식 프로세스 내에서 exec()를 재호출해서/bin/ls를 실행하게 됩니다.exec /bin/ls는 이 과정(fork() 호출)을 거치지 않고 명령어를 실행하게 됩니다.
Plain Text
복사
자리 고정으로 하기 힘들 것 같아서 gcp 인스턴스 debian buster로 하나 만들어서 환경 세팅함.
Makefile 작성 → make 하면 docker-compose up 해서 mariadb, wordpress, nginx 돌아감.
외부 ip(인스턴스 ip)로 접속하면 wordpress 가입 화면 뜸
pid 공부→ 각 컨테이너에서 ps 명령어가 돌지 않음→ apt-get update && apt-get install procps 설치 → 어차피 계속 확인할 것 같아서 dockerfile에 추가
현재 pid 1 은 전부 script.sh이 가지고 있음, script.sh에서 bash로 안끝나게 설정해둠.
•
bash로 잡아두지 않으면 왜 바로 꺼질까?
트리 구조로 유지되는 프로세스들은 부모 프로세스가 죽으면 모두 종료되는데, 만일 서비스로 실행하고 있는 프로세스가 부모 프로세스의 종료로 이용할 수 없게 된다면 이를 이용하고 있는 여타 다른 프로세스에 문제가 생긴다. 이에 따라 서비스로 유지해야 하는 프로세스들을 별도의 루트를 만들어 동작시키는데, 이를 데몬 프로세스라고 한다.
따라서 데몬 프로세스는 기본적으로 PID 1로써 실행하는 것이 아니니, 당연히 Docker Container에서는 어떠한 것도 실행할 것이 없는 것으로 보고 종료된 상태가 반복되는 것이다. [출처:Jseo Inception]
포그라운드로 설정해야 함!
MariaDB
mariaDB script.sh에 위처럼 daemon off 옵션을 넣었더니 daemon off 옵션을 찾을수 없다고 뜨면서 30초마다 꺼졌다가 켜짐
꺼졌다가 켜질때마다 script.sh이 실행되는듯
mysql stop → mysqld_safe 실행했더니 502 BadGateway 뜸…
wp-cli
wordpress 관리를 명령어로 할 수 있음! 이를 통해 로그인 된 상태로 보여지게 하기!….인것같음…
env
.env 파일 만듬
•
mariadb에 env로 MARIADB_USER=sehyan 이랑 MARIADB_PASSWORD=1234 잘 들어가있는데
CREATE DATABASE IF NOT EXISTS wordpress;
CREATE USER '$MARIADB_USER'@'%' IDENTIFIED BY '$MARIADB_PASSWORD';
GRANT ALL ON wordpress.* TO '$MARIADB_USER'@'%';
FLUSH PRIVILEGES;
SQL
복사
위에 명령어대로 하면 아래처럼 안먹힌다… ${} 형식도 안먹히고 따옴표 떼면 아예 syntax error 뜸…저게 맞나?
근데 이대로 하면 db에러남!
→query.sql로 넣지 않고 그냥 script.sh에 echo 로 sql문 넣었더니 돌아감. 컨테이너에 있는 env가 mysql을 실행하면 접근이 안되는 것 같음. 어떻게 해야 하지….?
•
wordpress에도 ‘$MARIADB_USER’ 형식으로 접근했더니 안됨. getenv를 사용해야 하는 것 같음.
wp_config.php 에 환경변수로 넣으니까 안돌아감! getenv도 안됨! wp-cli를 먼저 해야 하나??
wordpress에 exec로 접속해서 db에 접근은 가능함…. 근데 db에 접근이 왜 가능한거지? env가 안되면 그것도 안돼야되는거 아닌감
yml파일에 그냥 environment로 넣었는데도 안됨. 웨지
→script.sh에 echo 를 사용해서 env값을 www.conf에 넣은 다음에 wp-config 에서 getenv로 가져오는 방법으로 해결!
→environment 아니고 .env를 envfile 로 넣어도 성공! (뭐가 더 나은 방법인지는 모르겠음)
•
volume 설정을 하려고 하는데 yml파일에 잘 넣었다고 생각하는데 wordpress가 아니라 nginx화면이 나오거나 403forbidden이 떠버린다…..
이렇게 했는데! 403forbidden이 뜬다! nginx 의 error log를 보니 /var/www/wordpress 가 forbidden이 되었다고 하는데, script.sh에 chmod777로 권한 열어놔도 forbidden이란다. 뭐가 문제일까ㅏ아아ㅏㅏ
→ mv /tmp/wordpress/* /var/www/wordpress 형태로 mv 해야 한다… 폴더 통째로 옮기려다보니 마운트 에러때문에 mv가 안됐었던거임….
•
오늘 할 일
ENV 대충 한두개 써놓은거 → 필요한 변수 다 정리해서 넣어서 돌리기
예시)
DOMAIN_NAME=sehyan.42.fr
# certificates
CERTS_=./XXXXXXXXXXXX
# MYSQL SETUP
MYSQL_ROOT_PASSWORD=XXXXXXXXXXXX
MYSQL_USER=XXXXXXXXXXXX
MYSQL_PASSWORD=XXXXXXXXXXXX
SQL
복사
아니그냥 MARIADB_USER를 MYSQL_USER로 바꾸기만 했는데 뭐가 문제야!!!!! 는 나의 문제였다고 한다
뭐를 더 넣어야할지 모르기 때문에 그냥 하면서 추가해야 할 것 같다. 아직 admin이랑 user도 제대로 안해놨기 때문에….
워드프레스 블로그 바로 뜨게 만들기
근데 DB랑 연결이 안됐는지 사진이 안뜸
https://34.64.216.171
와아아아ㅏㅏ아아ㅏㅏㅏㅏ
포그라운드로 돌게 하기
→그냥 막 복붙 했다가 전부 터져버려서 다시 원상복구 해둠. 내일 해야지~!~!~!~!
mariadDB
wordpress
mkdir -p ./run/php/
/usr/sbin/php-fpm7.3 -F
SQL
복사
이걸로 했는데 자꾸 꺼진다. 이 뒤에 bash를 붙여야 오래 산다. 왜지? 포그라운드로 돌면 되는거 아닌감
→mkdir경로를 절대경로로 해야 하는데 상대경로로 해버렸다ㅎ;
nginx
tty:true 를 없앴더니 nginx 말고 전부 restart 되어버림. tty 가 컨테이너 안끝나게 붙잡아주는거라는데, 이러면 bash랑 다른게 뭐지? 써도 되나?
wordpress USER 한명 더 만들기
DB의 root계정에 비밀번호가 걸려있어야함!! → VM 깔아서 설정해볼것
sehyan.42.fr로 설정하기 (VM에서 해야 할듯)
평가준비(공부)
Docker Network 설명
Docker Volume 설명
Docker-compose 설명
sql문 알아두기
PID1 설명