테스트 사이트 - 개발 중인 베타 버전입니다

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

· 5년 전 · 2250 · 13

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

 

 

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

댓글 13개

5년 전
@훈련소장
php-fpm 컨테이너로 들어가면
/usr/local/etc/php-fpm.d/www.conf 를 보시면
user = www-data
group = www-data

로 되어 있습니다.

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

data 폴더만 볼륨 마운트에서 제외 하거나, 그냥 php-fpm 을 root 권한으로 설정하면 될것 같네요.
5년 전
@명랑폐인 정말 많은 도움이 되었습니다..
찾아낸 결론은 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로 안해도 정상적으로 나옵니다...
결국 방법을 찾아냈네요.. 감사합니다.
5년 전
-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.

이런 에러가 발생하는데... 어떤 이유일까요.. ?

게시글 목록

번호 제목
1717252
1717247
1717243
1717237
1717225
1717214
1717208
1717203
1717189
1717183
1717177
1717172
1717163
1717162
1717156
1717154
1717153
1717141
1717140
1717138
1717113
1717111
1717105
1717099
1717085
1717076
1717072
1717065
1717062
1717050