docker 이미지로 apache및 php 개발환경 구축

wimes·2020년 4월 11일
0

CI/CD tutorial

목록 보기
3/7

본 포스팅은 동빈나 님의 Docker 활용 및 배포 자동화 실전 초급을 보고 정리한 글입니다.

  • 우선 docker ps 명령어로 모든 컨테이너를 삭제하는 것으로 시작하도록 하겠습니다.

  • sudo docker ps -a
    sudo docker rm -f `docker ps -a -q`
    # 또는
    sudo docker rm -f 5
    

  • docker에 php 설치를 위해 Dockerfile을 수정하도록 합니다.

    FROM ubuntu:18.04
    MAINTAINER Wimes <dev.wimes@gmail.com>
    
    RUN apt-get update
    RUN apt-get install -y apache2 # install Apache web server (Only 'yes')
    RUN apt-get install -y software-properties-common # php 5.6(이전버전) 설치를 위해
    RUN add-apt-repository ppa:ondrej/php # For Installing PHP 5.6
    RUN apt-get update
    RUN apt-get install -y php5.6
    
    EXPOSE 80
    
    CMD ["apachectl", "-D", "FOREGROUND"]

    sudo docker build .

    그런데 설치를 하다가 보면 위의 사진처럼 어떠한 옵션을 입력하라고 나오는데 우리는 아무것도 입력할 수가 없습니다.

    이렇게 추가적인 입력을 요구할 수 있는 것은 미연에 방지하는 것이 중요합니다.

    Dockerfile을 열어 환경 변수를 추가해주도록 합니다.

    FROM ubuntu:18.04
    MAINTAINER Wimes <dev.wimes@gmail.com>
    
    # Avoiding user interaction with tzdata
    ENV DEBIAN_FRONTEND=noninteractive
    
    RUN apt-get update
    RUN apt-get install -y apache2 # install Apache web server (Only 'yes')
    RUN apt-get install -y software-properties-common # php 5.6(이전버전) 설치를 위해
    RUN add-apt-repository ppa:ondrej/php # For Installing PHP 5.6
    RUN apt-get update
    RUN apt-get install -y php5.6
    
    EXPOSE 80
    
    CMD ["apachectl", "-D", "FOREGROUND"]

    sudo docker build .

    성공적으로 설치가 완료되었다면 images에 기존에 있거나 설치에 실패한 images는 none으로 변경되고 새롭게 만들어진 example image를 볼 수 있습니다.

    sudo docker images

    우리는 기존의 none 이미지를 지워주도록 합니다.

      sudo docker rm -f `sudo docker -p -q`
      sudo docker rmi -f {image id}
    

  • 이제 우리가 만든 docker server image를 띄어주도록 합니다.

    sudo docker run -p 80:80 -v /home/ubuntu/example/html:/var/www/html example

    sudo docker run : docker를 실행합니다.

    80:80 : host(현재 도커가 실행되는 곳, 즉 EC2)의 포트와 docker 이미지의 80포트를 마운트 해줍니다.

    /home/ubuntu/example/html:/var/www/html : host의 /home/ubuntu/example/html 경로와 docker container /var/www/html 경로를 볼륨 마운트 해줍니다.
    (참고로 /var/www/html은 php의 기본적인 경로, php 소스코드가 놓이는 default 경로)

    host의 경로(/home/ubuntu/exmaple/html)에 어떠한 파일을 넣게 되면 docker container(/var/www/html)에 자동으로 놓이게 됩니다.

    example: example이라는 name의 docker image를 실행

    이제 http://52.78.192.164:80 으로 들어가보면 다음과 같은 화면을 볼 수 있습니다.

  • 이제 php 소스코드를 작성해줍니다.

    	cd /home/ubuntu/example/html  
    	sudo vim index.php
    
<?php phpinfo(); ?>

이제 다시 http://52.78.192.164:80 으로 가보면 다음과 같은 화면을 볼 수 있습니다. (php의 info를 보여줍니다.)

profile
iOS/Swift & Node.js Dev.

0개의 댓글