LEMP docker 를 만들어보았습니다.(버그있음) > 자유게시판

자유게시판

LEMP docker 를 만들어보았습니다.(버그있음) 정보

LEMP docker 를 만들어보았습니다.(버그있음)

본문

LEMP_docker 입니다.

명령어 한줄로 nginx, php, mariadb를 설치하고 실행해줍니다.

각각의 버전은 수정도 가능합니다. 버그가 있는데 도움을 부탁드립니다.

버그는 아니고,  mariadb 로그파일 저장기능이 없습니다.

 

1. docker 와 docker-compose 를 설치합니다.

 

2. 소스를 다운받습니다. git clone https://github.com/minotech/LEMP_docker.git

 

3. 해당 폴더에 들어가서 docker-compose up 실행하면 끝입니다. 아래글은 설명

 

 

 

4. LEMP_docker 폴더 밑에 docker-compose.yml 파일과 4개의 하위 폴더가 있습니다.

- www 폴더는 웹루트 폴더입니다. 웹소스를 복사해 넣으세요..


- nginx 폴더 아래 conf.d/default.conf 파일을 이용해서 설정을 변경할 수 있습니다.


- php-fpm 폴더 아래에 설정파일 두개가 있습니다.

docker-compose.yml 에서 설정파일 두개중 하나를 선택하여 입력하면 됩니다.


- mariadb 폴더 아래에는 데이타가 저장되는 data 폴더와 설정파일이 my.cnf가 있는 config 폴더가 있습니다. log 폴더는 작동하지 않습니다(방법을 찾는중).


5. docker-compose.yml 파일을 잘 보시면 volumes 부분의 앞부분이 host 컴퓨터의 폴더이고,

:뒷부분이 컨테이너 폴더입니다. 컨테이너 폴더는 건드릴 필요없고, host 컴퓨터 부분만 변경하면 됩니다.

       - ./mariadb/data:/var/lib/mysql
예를 들어 이부분을 보면 ./mariadb/data 현재 디렉토리밑의 mariadb/data 폴더를 의미합니다.

:/var/lib/mysql 이것은 컨테이너의 폴더입니다.

즉 컨테이너에서 /var/lib/mysql에 저장될 데이타를 host 컴퓨터의 ./mariadb/data로 저장시킨다는 의미입니다.

 

6. db: 그누보드등에서 db서버의 host를 주소나 localhost로 넣으면 안됩니다.

여기에 적여있는 db를 host이름에 넣어주세요..(중요)

 

7. 실행할때 docker-compose.yml 이 있는 폴더에 가서 다음 명령어로 실행시킵니다.

$docker-compose up

ctrl-z 를 누르면 종료없이 빠져나올수 있으며 백그라운드로 실행됩니다.

ctrl-c 를 누르면 종료됩니다. 또는 docker-compose stop 과 같은 명령어입니다.

 

8. 그누보드 신규 설치는 테스트하였습니다.

그런데, 기존 소스를 복사해와서 실행 시킬 때, 자동등록방지 캡챠가 안나오고 있습니다.

해결책을 알려주시면 감사하겠습니다.

해결되었습니다. 감사합니다.

 

참고로 DB를 백업, 복원하는 법입니다.

 

일반백업 :

$sudo mysqldump -u root -p비밀번호 --databases DB명 > /backup.sql
비밀번호 있는경우 -p비밀번호 추가 (p와 비밀번호사이 공백없음)

 

 

도커백업 :

$docker exec -i 컨테이너명 mysqldump -u root -p비밀번호 --databases DB명 > /backup.sql

 

 

일반복원 :

mysql -u root -p비밀번호 < ./backup.sql

 

 

도커복원 :

$docker exec -i 컨테이너명 mysql -u root -p비밀번호 < ./backup.sql

 

 

추천
2

댓글 13개

docker-compose build  또는
docker-compose build php
명령을 수행하셔야 합니다.

build용 docker 파일은 /php-fpm/dockerfile/Dockerfile 에 있네요.

수행을 안하시면 php 확장 모듈과 그에 필요한 기본 라이브러리리가 설치되지 않습니다.

그리고 docker-compose 로 build 시 build 설정에 있는 Dockerfile을 사용하게 됨으로
docker-compose.yml  php 파트에 다음 설정이 추가되어야 합니다.

php:
  build: ./php-fpm/dockerfile
build 를 피하기 위해서, image: ifnlife/php-ext:v7.4.3 에 php-fpm과 php확장모듈을 추가시킨 private 도커파일을 만들었습니다. 그래서 그냥 실행시키면 됩니다.
확장모듈을 추가하고 싶으면 그때 빌드해도 됩니다.
  /bin/bash 로 docker 쉘로 들어가서 확인을 해보니
php-gd는 설치되어 있지만, 실제 이미지 모듈인 libpng, libjpeg 가 설치되어 있지 않았습니다.
빌드해서 올려놓은 이미지를 새로 빌드하셔야 할것 같습니다.

docker shell에서
apt-get update
apt-get install libfreetype6-dev libjpeg62-turbo-dev libpng12-dev
해보니, 다시 설치를 하던데요.. 한번 해보세요.
설치 안되는데요... 아..그리고, 캡챠는 해결되었습니다.. 결국 권한문제였네요.. 분명 확인한다고 했는데, 실수가 있었습니다. 도커 웹파일이 약간 캐시가 있는것 같은 느낌이 들어요.. 바로 반영 안되는 것 같기도 하고... 아무튼 잘 되었네요.. 감사합니다.
권한 설정을 www-data 로 해두신 부분이 문제가 되는것 같습니다.
일반적으로 docker 환경은 컨테이너라서 그냥 root 권한으로 설정합니다.
권한 설정을 www-data 로 해두신 부분이 문제가 되는것 같습니다. --> 이게 무슨 말씀이신지 잘 이해가 안가는데요...
data폴더를  root로 소유자를 변경하면 도커가 쓰기모드로 들어갈때 root 권한으로 쓰지 않아요...
새로운 사용자를 만들어서 쓰기로 되드라고요..그래서 777로 해야만 쓰기가 되는것 같습니다.

php-fpm 컨테이너로 들어가면
/usr/local/etc/php-fpm.d/www.conf 를 보시면
user = www-data
group = www-data

로 되어 있습니다.

 777로 변경시 정상 동작한다면, 이 부분이 문제일거라고 보네요.

data 폴더만 볼륨 마운트에서 제외 하거나, 그냥 php-fpm 을 root 권한으로 설정하면 될것 같네요.
정말 많은 도움이 되었습니다..
찾아낸 결론은 docker-compose파일 ftp부분에 user: "1000:1000" 이것을 추가해야하는 겁니다..
1000유저는 /etc/passwd 에 나와있는 user입니다.. (저같은 경우 ftpuser)
ftpuser:x:1000:1000:ftpuser:/home/ftpuser:/bin/bash : /etc/passwd 파일 내용)
root:x:0:0:root:/root:/bin/bash

그런데 root는 0번인데, 0번으로 세팅하면 제대로 안됩니다. 다른 유저가 나오네요..
즉 user부분을 1000번으로 세팅하고, data폴더의 소유자를 1000번에 해당하는  사용자이름으로
모두 변경해주면 777로 안해도 정상적으로 나옵니다...
결국 방법을 찾아냈네요.. 감사합니다.
-bash-4.2# sudo docker-compose up
Starting nginx ...
Recreating php-fpm ...
Starting nginx ... error

ERROR: for nginx  Cannot start service nginx: driver failed programming external connectivity on endpoint nginx (dc60e52c7a31e9e904937eb2fb186f26b3ab5358ccc44ed212da2cc05e66ffcd): Error starting uStarting mariadb ... error

ERROR: for mariadb  Cannot start service db: driver failed programming external connectivity on endpoint mariadb (1102cd179b3e96d4bdacf65203ee692133100f5d033cbb57dfe065b62eda11cf): Error starting Recreating php-fpm ... done

ERROR: for nginx  Cannot start service nginx: driver failed programming external connectivity on endpoint nginx (dc60e52c7a31e9e904937eb2fb186f26b3ab5358ccc44ed212da2cc05e66ffcd): Error starting userland proxy: listen tcp 0.0.0.0:80: bind: address already in use

ERROR: for db  Cannot start service db: driver failed programming external connectivity on endpoint mariadb (1102cd179b3e96d4bdacf65203ee692133100f5d033cbb57dfe065b62eda11cf): Error starting userland proxy: listen tcp 0.0.0.0:3306: bind: address already in use
ERROR: Encountered errors while bringing up the project.

이런 에러가 발생하는데... 어떤 이유일까요.. ?
전체 195,317 |RSS
자유게시판 내용 검색

회원로그인

진행중 포인트경매

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