docker(도커)로 centos + apm + mail 서버 구축 완료 후 배포

2022. 1. 19. 20:38·이전자료/서버

첨부파일 메일 전송 코드를 테스팅을 하다가 클라우드 개발서버의 이미지를 손상시켜버렸습니다.

​

매번 이런 식으로 작업하기에는 너무 설정할 것도 설치할 것도 많아 도커를 이용하여 개발서버를 처음부터 끝까지 직접 구현하고 이미지화하였습니다.

​

클라우드 서버에 개발서버 이미지를 생성하면 되지만 제 담당도 아니고 문제가 생길 때마다 매번 부탁하기도 그렇더라고요.

​

먼저 구축 완료한 결과 화면입니다.

 

qmail 서버를 구축하여 메일 전송 및 웹서버를 통해 사이트 출력까지 이상 없이 완료하였습니다.

​

저의 private 도커 이미지입니다.

태그 1.0은 apm 구축 1.1은 메일 서버 구축으로 docker 이미지화하였습니다.

구축한 리포지토리는 저만 사용할 수 있도록 private 화하였고 pull을 받기 위해서는 로그인이 필요합니다.

docker login

그리고 제가 만든 이미지를 pull 하죠.

docker pull ko5642027/centos7-apm-qmail:1.1

이미지를 run 합니다 따로 생성하고 start 하진 않습니다. 필요에 따라 다양한 옵션을 줄 수 있습니다. 저는 웹서버 80포트 smtp 25번 포트 imap 143포트를 포워딩하였고 centos7을 백그라운드로 컨테이너를 돌립니다. 파일의 필요에 따라 볼륨을 마운트 하였고 systemctl 기능을 사용하기 위해서 /sbin/init을 사용하였습니다.

​

그러고 나서 배쉬셀을 유지하면서 외부에서 컨테이너 안에 명령을 실행할 수 있도록 합니다.

docker run --privileged -d -p 80:80 -p 143:143 -p 25:25 -v /home/centos/files:/usr/local/files --name dev docker.io/ko5642027/centos7-apm-qmail:1.1 /sbin/init
docker exec -it dev /bin/bash

그리고 이미지를 새로 띄우게 되면 mysql의 환경 변수를 다시 동기화를 해줘야 합니다.

source /etc/profile
sync

포트가 열린 것을 확인하고 필요한 프로세서를 다시 내렸다가 올려줍니다. 저는 웬만하면 restart를 사용하지 않습니다.

 
netstat -ntlp | grep 25
netstat -ntlp | grep 80
netstat -ntlp | grep 143

systemctl status httpd
systemctl status mysqld
systemctl status qmaild
systemctl status daemontools
systemctl status dovecot

systemctl stop httpd
systemctl stop mysqld
systemctl stop qmaild
systemctl stop daemontools
systemctl stop dovecot

systemctl start httpd
systemctl start mysqld
systemctl start qmaild
systemctl start daemontools
systemctl start dovecot

imap 메일 서버인 dovecot을 올리는데 실패했는데요. 관련 프로세스가 떠있는지 확인하고 킬한 뒤에 다시 올려줍니다.

kill -9 pid

docker(도커)의 내부 IP는 172.17.0.2 사용합니다. docker(도커)안에서 localhost 호스트 네임을 사용하면 루프백을 받아 127.0.0.1을 사용하게 됩니다. 저의 apm과 메일 서버는 docker 안에서 구현했기 때문에 IP는 172.17.0.2이고 호스트 네임은 컨테이너 ID 값이 되겠습니다.

vi /home2/webmail/conf/db.inc.php
vi /home2/vpopmail/etc/vpopmail.mysql
grant all privileges on DB명.* to 유저명@'172.17.0.2' identified by '패스워드';
172.17.0.2
127.0.0.1

그리곤 로컬에서는 hosts 파일을 변조하여 접근을 할수 있습니다.

 

이제 필요에 따라 살을 붙여서 commit하고 태깅하여 push를 진행 할수 있습니다.

​

사실 Dockerfile을 만들어서 컴포저를 이용하는 것이 좋긴 하나 서버에 개인적으로 해야 할 설정도 워낙 많고 그럴 시간이 없어서 일단 컨테이너 하나에 다 때려 박아 넣었습니다. 저는 개발서버와 똑같이 구축해서 테스트 환경만 구축하면 됐기에.. 이제 도커 이미지에서 메일 부하 테스트 등을 눈치 안 보고 마음껏 할 수 있게 되었네요.

'이전자료 > 서버' 카테고리의 다른 글

php-fpm으로 메일 UI 변경 및 사이트 속도 개선  (0) 2022.01.19
AH02564: Failed to configure encrypted (?) private key 해결 방법  (0) 2021.12.05
도커 컨테이너란? 컨테이너 활용 사례  (1) 2021.12.05
NVM status 에러 해결 방법  (0) 2021.12.05
실무에서도 사용하는 톰캣(Tomcat) 8.5 상세 설정 방법  (0) 2021.08.13
'이전자료/서버' 카테고리의 다른 글
  • php-fpm으로 메일 UI 변경 및 사이트 속도 개선
  • AH02564: Failed to configure encrypted (?) private key 해결 방법
  • 도커 컨테이너란? 컨테이너 활용 사례
  • NVM status 에러 해결 방법
나의 로그
나의 로그
안녕하세요
  • 나의 로그
    Log
    나의 로그
  • 전체
    오늘
    어제
    • 분류 전체보기 (26)
      • 실무 (0)
        • 코인거래소 (0)
      • 개인공부 (2)
        • TIL (2)
      • 이전자료 (24)
        • 웹개발 (16)
        • 서버 (7)
        • 프로그램 (1)
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
나의 로그
docker(도커)로 centos + apm + mail 서버 구축 완료 후 배포
상단으로

티스토리툴바