[docker] docker을 이용한 개발환경 셋팅 CI + MYSQL

[docker] docker을 이용한 개발환경 셋팅 CI + MYSQL

2019, Sep 16    

목표

로컬환경에 개발환경을 설치하지 않고 docker를 이용해 apm 개발환경을 구성해보자! (for windows7)

ubuntu 16.04
php 7.3
codeigniter 3.10.
mysql 5.7

준비

1.docker, docker-compose 설치 1편참고
(toolbox를 이용해 설치한 사람은 docker-compose를 따로 설치할 필요없다.)
2.codeigniter 3 보일러 플레이트 준비 다운로드

프로젝트 폴더 생성

\docker\jizero_member

dockfile 작성

\docker\jizero_member\dockfile

각자 환경에 맞는 설치파일을 선택하여 추가&구성하자

FROM ubuntu:16.04

RUN sed -i 's/archive.ubuntu.com/mirror.kakao.com/g' /etc/apt/sources.list

RUN apt-get clean \
    && apt-get -y update \
    && apt-get install -y --no-install-recommends \
    locales \
    python-software-properties \
    software-properties-common \
    && locale-gen en_US.UTF-8 \
    && rm -rf /var/lib/apt/lists/*

ENV LANG en_US.UTF-8
ENV LANGUAGE en_US:en
ENV LC_ALL en_US.UTF-8

RUN add-apt-repository ppa:ondrej/php

RUN apt-get update \
    && apt-get install -y --no-install-recommends \
      tzdata \
      apache2 \
      php7.3 \
      php7.3-cli \
      libapache2-mod-php7.3 \
      php7.3-gd \
      php7.3-json \
      php7.3-curl \
      php7.3-mbstring \
      php7.3-mysql \
      php7.3-redis \
      php7.3-mongodb \
      php7.3-xml \
      php7.3-xsl \
      php7.3-zip \
      composer \
      && rm -rf /var/lib/apt/lists/*



RUN ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime


COPY run /usr/local/bin/run
RUN chmod +x /usr/local/bin/run
RUN a2enmod rewrite

RUN echo "ServerName localhost" >> /etc/apache2/apache2.conf
RUN sed -i '/<Directory \/var\/www\/>/,/<\/Directory>/ s/AllowOverride None/AllowOverride all/' /etc/apache2/apache2.conf


COPY . /var/www/html

EXPOSE 80 443

CMD ["/usr/local/bin/run" ]


docker-compose.yml 작성

\docker\jizero_member\docker-compose.yml

컨테이너 두개를 만들것이다. 서비스명은 webservice / mysqldb 임의로 정한다.

volumes에 www는 CI파일이 들어있는 루트 폴더이다.


version: '3'
services:
  webservice: ## 서비스명
    build: ./
    ports:
      - "8082:80"
    volumes:
      - ./www:/var/www/html ##{wwww} 연결시킬곳
    links:
      - mysqldb
  mysqldb: ## 서비스명
    image: mysql:5.7
    environment:
      - MYSQL_DATABASE=mysql ## 테이터베이스
      - MYSQL_ROOT_PASSWORD=jizero12 ##루트비번
      - MYSQL_USER=jizero ##사용자명
      - MYSQL_PASSWORD=jizero12 ## 비번
    command: "--innodb_use_native_aio=0"
    volumes:
      - ./mysql_data:/var/lib/mysql
    ports:
      - "3306:3306"

docker 실행

해당 프로젝트로 경로로 이동


docker-compose up

container 구동 확인


docker ps

Kitematic 으로도 확인할 수 있다. (초록불 확인!)

구동이되지않았을경우 에러로그를 잘살펴보자!

외부툴에서 실행시키기 (mysql workbench)

실행이 되지 않을경우?

파워셀에서 mysql을 확인해보자


docker exec -it {서비스명} /bin/bash
mysql -u root -p password

프로젝트 종료


docker-compose down

NEXT step

2편에서는 CI로 restful api 서비스 만들기