>백엔드 개발 >PHP 튜토리얼 >docker를 사용하여 통합 서비스 lnmp 환경 생성

docker를 사용하여 통합 서비스 lnmp 환경 생성

不言
不言원래의
2018-04-09 15:14:231909검색

이 글에서는 주로 docker를 사용하여 통합 서비스 lnmp 환경을 만드는 방법을 소개합니다. 이제는 모든 사람과 공유하고 도움이 필요한 친구들에게 참고 자료를 제공합니다.

docker의 기본 명령어를 익힌 후, docker를 사용하여 실제 지원 환경도 만들어보고 싶어서 가장 많이 사용하는 lnmp 환경을 테스트에 사용했습니다. 지원 환경 실행 순서는 mysql->php->nginx 인데, 그 이유는 아래와 같습니다.

1. MySQL

서비스에 사용되는 이미지는 모두 공식 이미지에서 가져온 것입니다. 소규모 기업과 개인 개발자의 경우 공식 이미지가 더 안전하며 걱정과 노력을 덜 수 있습니다.

# 拉取镜像
$ docker pull mysql
# 运行MySQL
$ docker run MySQL --name mysql -d \
    -p 3306:3306 \
    -v /var/lib/mysql/:/var/lib/mysql/ \
    -e MYSQL_ROOT_PASSWORD=ilovec \

위 작업 매개변수에 대해 차례로 설명하겠습니다

  1. --name: 지정된 실행 컨테이너의 이름

  2. -d: 백그라운드에서 컨테이너를 실행

  3. - p: 컨테이너의 포트로 호스트 매핑

  4. -v: 컨테이너를 로컬 디렉터리에 마운트 매핑

  5. -e: 컨테이너 실행을 위한 환경 변수 지정

2.PHP

공식 이미지인 php -fpm을 뽑아서 필요한 PHP 버전에 맞게 다운로드하지만, 일반적으로 사용되는 일부 PHP 패키지는 공식 이미지에 포함되어 있지 않으므로 dockerfile을 사용하여 다시 설치해야 합니다. Dockerfile의 PHP 확장 패키지 mysqli 및 pdo.

FROM php:7.1-fpm
# Install modules
RUN docker-php-ext-install mysqli && docker-php-ext-enable mysqli
RUN docker-php-ext-install pdo_mysql
CMD ["php-fpm"]

Run php-fpm

docker run -d -p 9000:9000 \
  --name php-fpm \
  --link mysql \
  -v /data/wwwroot/:/data/wwwroot/ \
  php-fpm

매개변수 중 --link에 주의하세요. 이 매개변수는 컨테이너 간 연결에 매우 유용합니다. 현재 컨테이너에 해당 컨테이너를 연결할 수 있는 도메인 이름 확인을 추가합니다. 예를 들어 위에서 언급한 php-fpm에서 mysql에 연결하면 php-fpm의 php 프로그램을 통해 mysql 컨테이너에 연결할 수 있습니다. mysql 문자열. Cat /etc/hosts는 내부의 구문 분석 기록을 볼 수 있습니다.

172.17.0.2 mysql b41d2569c06d

3.Nginx

다음 명령을 통해 nginx를 실행하세요. php 파일을 구문 분석하려면 nginx가 127.0.0.1:9000 포트를 통해 php-fpm에 연결해야 하기 때문에 php-fpm 링크를 통해 .

docker run -d -p 80:80 \
  --name nginx \
  --link php-fpm \
  -v /data/wwwroot/:/data/wwwroot/ \
  nginx

nginx가 파일을 구문 분석할 때 요청이 정적 파일인 경우 nginx 컨테이너의 파일을 클라이언트에 직접 반환한다는 점에 유의할 가치가 있습니다. 요청은 php-fpm으로 전달된 다음 php-fpm은 구문 분석을 위해 로컬로 이동하여 php-fpm 컨테이너 자체의 파일인 php 파일을 찾습니다.

위 세 가지 서비스의 시작 명령을 순서대로 실행한 후 공통 lnmp를 빌드할 수 있습니다. 다만, 서비스를 실행할 때마다 위의 명령을 실행하는 것은 다소 번거로운 작업입니다. 중앙 집중식 관리를 위해 docker-compose 명령을 사용할 수 있습니다.

docker-compose

를 사용하려면 lnmp 디렉터리를 생성한 후 lnmp 디렉터리에 docker-compose.yml을 생성하고 다음 명령을 입력하면 통합 환경을 관리할 수 있습니다.
사실 명령어 이름을 보면 각 명령어의 의미를 쉽게 알 수 있어요.

version: docker-compose는 개발 도구이므로 버전마다 지침이 다를 가능성이 높으므로 처음에 docker-compose 지침의 해당 버전을 선언해야 합니다.

이미지: 서비스가 어떤 이미지를 통해 실행되는지를 의미합니다.

dependents_on: 이는 소프트웨어가 의존하는 소프트웨어를 지정하며 실제로 소프트웨어가 실행되는 순서도 선언합니다.

version: '2'

services:
  mysql:
    image: "mysql"
    ports:
      - "3306:3306"
    volumes:
      - /var/lib/mysql/:/var/lib/mysql/
    environment:
      MYSQL_ROOT_PASSWORD: password
      
  php-fpm:
    image: "php-fpm"
    depends_on:
      - mysql
    links:
      - mysql
    ports:
      - "9000:9000"
    volumes:
      - /data/wwwroot/:/data/wwwroot/

  nginx:
    image: "nginx"
    depends_on:
      - php-fpm
    links:
      - php-fpm
    volumes:
      - /data/wwwroot/:/data/wwwroot/
    ports:
      - "80:80"

그런 다음 이 lnmp 디렉터리에서 compose 관련 명령을 실행하여 제어할 수 있습니다.

# 运行docker-compose服务
$ docker-compose up -d
# 停止服务
$ docker-compose stop
# 删除该服务相关的容器
$ docker-compose rm
# 运行已存在docker-compose的服务
$ docker-compose start

관련 권장 사항:

Docker에서 PHP 개발 환경 구축


위 내용은 docker를 사용하여 통합 서비스 lnmp 환경 생성의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.