2017-02-10 1 views
1

WordPress의 컨테이너에 sendmail_path을 설정하고 다른 컨테이너에서 제공하는 센드 메일을 사용하고 싶습니다. 내 경우에는 MailHog.Docker가 MailPress와 Mail catcher를 연결합니다.

이 두 볼륨을 공유해야합니까 ...

version: '2' 
services: 
    wordpress: 
     image: wordpress 
     links: 
      - db:mysql 
      - mailhog 
     ports: 
      - 80:80 
     domainname: foo.com 
     hostname: foo 
     volumes: 
      - ./public:/var/www/html 
     environment: 
      WORDPRESS_DB_PASSWORD: example 
     depends_on: 
      - mailhog 

    mailhog: 
     image: mailhog/mailhog 
     ports: 
      - 1025:1025 
      - 8025:8025 

    db: 
     image: mariadb 
     environment: 
      MYSQL_ROOT_PASSWORD: example 

내가 워드 프레스 컨테이너에 command: "echo 'sendmail_path = \"/usr/local/bin/mailhog sendmail\"' > /usr/local/etc/php/conf.d/mail.ini" 실행을 시도했지만 실제로 그것을 인쇄 :

그래서이 내 고정 표시기-작성입니까?

추신. APP에서 SMTP 서버로 사용할 수 있다는 것을 알고 있지만 더 자동화 된 방식으로 처리하려고합니다.

답변

2

메일 박스가 워드 프레스 컨테이너에 설치되어 있지 않으면 경로 /usr/local/bin/mailhog이 종료되지 않습니다.

sendmail을 통해 메일을 보내려면이 메일을 mailhog로 보내야합니다. --smtp-adrr 매개 변수

FROM wordpress 
RUN curl --location --output /usr/local/bin/mhsendmail https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsendmail_linux_amd64 && \ 
    chmod +x /usr/local/bin/mhsendmail 

RUN echo 'sendmail_path="/usr/local/bin/mhsendmail --smtp-addr=mailhog:1025 [email protected]"' > /usr/local/etc/php/conf.d/mailhog.ini 

참고 :이 작업을 수행하려면 당신은 워드 프레스 dockerfile를 확장해야합니다 그것이 형태 <mailhog_hostname>:<mailhog_port>에 있어야합니다.

도커 파일을 만들려면 docker-compose.yml을 변경하십시오. 이 exemple에서

version: '2' 
services: 
    wordpress: 
     build: 
      context: ./ 
      dockerfile: ./Dockerfile 
     links: 
      - db:mysql 
      - mailhog 
     ports: 
      - 80:80 
     domainname: foo.com 
     hostname: foo 
     volumes: 
      - ./public:/var/www/html 
     environment: 
      WORDPRESS_DB_PASSWORD: example 
     depends_on: 
      - mailhog 

    mailhog: 
     image: mailhog/mailhog 
     ports: 
      - 1025:1025 
      - 8025:8025 

    db: 
     image: mariadb 
     environment: 
      MYSQL_ROOT_PASSWORD: example 

, 당신이 쓴 dockerfile은 "Dockerfile"라는되어야하고 (당신이 고정 표시기-편지 쓰기를 실행하는 경우) 현재 디렉토리에 있어야합니다. 그에 따라 경로를 변경할 수 있습니다. 1025 : 1025 포트 항목을 호스트에서 연결할 필요가 없으면 제거 할 수 있습니다.

이제 mail() 함수는 의도 한대로 작동해야합니다.

+0

이것은 매우 유망한 @Dinacel처럼 보이지만 "메일 기능을 인스턴스화 할 수 없습니다"오류가 발생합니다. sendmail_path가 올바르게 설정되어 있고 phpinfo에 표시되어 있습니다. WP 컨테이너로 ssh를 보내고 mhsendmail을 실행하려고하면 아무 것도 표시되지 않습니다. – Kubitomakita

+0

안녕하세요, Dockerfile을 수정했습니다 :'usr/local/etc/php/conf.d/mailhog.ini'에는 절대 경로 정의를 위해 시작 슬래시가 없었습니다. typo)와'--smtp-addr = mailserver : 1025' (필자가 작성한 메일 서버가 아니라 사용자의 예제에서 mailhog가되어야 함) 올바른 호스트 이름을 가지고 있지 않다. – Dinacel

+0

불행히도 여전히 mailhog 호스트에서는 작동하지 않는다. 나는 또한 localhost 그러나 운을 시험해 보았다. 시스템 로그에 오류가 없으며 PHPMailer가 "메일 기능을 인스턴스화 할 수 없습니다"라고 말합니다. – Kubitomakita

관련 문제