어떻게 Mac 에서 docker 를 통 해 PHP 개발 환경 을 설정 합 니까?

8955 단어 phpmacdocker
docker-compose 를 사용 하여 개발 환경 설정
일반적인 기본 적 인 PHP 개발 환경 은 PHP,PHP-FPM,WEB 서버,MySQL 데이터 베 이 스 를 포함 하고 Redis 나 memcache 등 관련 NoSQL 서비스 도 있다.저 는 주로 docker-compose 를 통 해 서 비 스 를 설정 합 니 다.
docker-compose 가 뭐 예요?
docker-compose 는 YAML 파일 을 통 해 항목 을 정의 합 니 다.항목 에는 하나 이상 의 용기 서비스 가 포함 되 어 있 습 니 다.일반 프로필 이름:docker-compose.yml.
디 렉 터 리 구조
당신 은 자신의 취향 에 따라 프로젝트 를 구성 할 수 있 습 니 다.다음은 제 가 사용 하 는 방법 입 니 다.app 디 렉 터 리 는 응용 코드 를 놓 았 습 니 다.services 아래 는 서 비 스 를 만 드 는 데 필요 한 것 입 니 다.어떤 서 비 스 는 우리 가 직접 미 러 를 만들어 야 합 니 다.Dockerfile 파일 에서 원 하 는 미 러 가 어떤 것 인지 설명 하 십시오.사용자 정의 미 러 를 만 들 때 도 추가 파일 이 필요 할 수 있 습 니 다.예 를 들 어 일부 프로필 은 미 러 를 만 들 때 이 프로필 을 미 러 에 복사 합 니 다.

MySQL
my sql 은 데이터 서비스 입 니 다.먼저 이 서비스 에 데이터 볼 륨 을 추가 한 다음 에 이 서비스 에서 이 데이터 볼 륨 을 사용 하여 데이터 베 이 스 를 생 성 한 데 이 터 를 여기에 두 십시오.그러면 우리 가 용 기 를 삭제 하 더 라 도 데이터 서비스 에 있 는 데 이 터 는 호스트 에 보관 하고 다음 에 용 기 를 만 들 때 기 존 데 이 터 를 계속 사용 할 수 있 습 니 다.volumes 아래 에 my sql 이라는 데이터 볼 륨 을 추가 합 니 다.
volumes: mysql: driver: local
그 다음 에 MySQL 이라는 서 비 스 를 추가 하고 서비스 에서 사용 하 는 미 러 를 지정 합 니 다.이 미 러 는 우리 가 만 든 Dockerfile 로 만 들 수도 있 습 니 다.아니면 미 러 를 만 들 지 않 고 기 존의 미 러 를 직접 사용 할 수도 있 습 니 다.여기 서 저 는 my sql:5.7 이라는 미 러 를 사 용 했 습 니 다.구체 적 으로 사용 할 버 전 을 설정 하 는 것 이 좋 습 니 다.
이 미 러 에는 환경 변수 가 있 습 니 다.우 리 는 서 비 스 를 정의 할 때 그들의 값 을 설정 할 수 있 습 니 다.여기 서 루트 사용자 의 비밀 번 호 를 설정 하고 만 들 데이터베이스,사용자 이름,그리고 비밀 번 호 를 설정 할 수 있 습 니 다.당신 은 자신의 수요 에 따라 이 변수의 값 을 수정 할 수 있 습 니 다.
my sql 서비스 에서 저 는 volumes 를 사용 하여 MySQL 데이터 볼 륨 을 지정 하 였 습 니 다.마 운 트 된 위 치 는 용기 의/var/lib/my sql 입 니 다.이것 은 데이터 베 이 스 를 저장 하 는 기본 적 인 곳 입 니 다.내 가 이 컴퓨터 에 MySQL 서 비 스 를 설 치 했 기 때문에 3306 포트 가 점용 되 었 기 때문에 6306 포트 를 용기 에 비 추 는 3306 포트 로 지정 합 니 다.
version: "3"services: mysql: image: mysql:5.7 environment: MYSQL_ROOT_PASSWORD: "root" MYSQL_DATABASE: "app" MYSQL_USER: "app" MYSQL_PASSWORD: "123456" volumes: - ./services/mysql/data:/var/lib/mysql ports: - "6306:3306"
테스트
우리 의 copose 파일 에는 현재 my sql 이라는 서비스 가 있 습 니 다.명령 행 도구 에서 프로젝트 가 있 는 디 렉 터 리 에 들 어가 서 실행 합 니 다.
docker-compose up
그리고 터미널 에서 미 러 를 설치 하고 용 기 를 시작 하 는 과정 을 보고 명령 단말 기 를 따로 열 어 실행 합 니 다.
docker-compose execmysql bash
mysql 용기 에 들 어가 서 데이터베이스 에 들 어가 서 검사 합 니 다.
mysql -uroot -pshow databases;
+--------------------+| Database           |
+--------------------+| information_schema |
| app                |
| mysql              |
| performance_schema || sys                |
+--------------------+5 rows in set (0.03 sec)
이때 우 리 는 my sql 용기 가 이미 사용 가능 하 다 는 것 을 발견 했다.
php
php 를 설명 하 는 서 비 스 를 정의 합 니 다.저 는 이 서비스 에 사용 할 미 러 를 만 들 려 고 이미지 가 아 닌 build 를 사 용 했 습 니 다.나 는 docker 가 만 들 려 고 하 는 이 미 러 에 사용 할 Dockerfile 파일 의 위 치 를 알려 주 었 다.
volumes 아래 는 서비스 용 데이터 볼 륨 입 니 다.저 는 copose 파일 이 있 는 디 렉 터 리 에 있 는 app 디 렉 터 리 를 용기 의/www/html/app 위치 에 마 운 트 했 습 니 다.이렇게 하면 나 는 프로젝트 의 코드 를 직접 수정 한 후에 바로 결 과 를 볼 수 있다.또한 이 컴퓨터 9000 포트 가 점용 되 었 기 때문에 9090 포트 를 용기 의 9000 포트 에 표시 하도록 지정 합 니 다.
php: build: context: ./services/php dockerfile: Dockerfile volumes: - ./app:/www/html/app ports: - "9090:9000"
Dockerfile
phop 서 비 스 를 구축 하 는 미 러 에 사용 되 는 Dockerfile 은.../services/phop/dockerfile 입 니 다.FROM,이 미 러 를 어떤 미 러 를 기반 으로 만 들 지 설정 하 였 습 니 다.저 는 phop:7.1-fpm 라 는 공식 적 으로 제공 하 는 미 러 를 사 용 했 습 니 다.RUN 은 몇 줄 의 명령 을 내 렸 는데 주로 패 키 지 를 설치 하 는 것 이다.예 를 들 어 추가 pp 확장 등 이다.이 확장 자 를 설치 하기 전에 확장 에 의존 하 는 다른 패 키 지 를 설치 해 야 합 니 다.여기 libpng 12-dev,libjpeg-dev,바로 gd 라 는 phop 확장 에 필요 한 패 키 지 를 설치 해 야 합 니 다.그리고 나 서 나 는 프로필 을 다시 복사 해서 거울 에 넣 었 다.
FROM php:7.1-fpm
RUN apt-get update && apt-get install -y libpng12-dev libjpeg-dev \
  && rm -rf /var/lib/apt/lists/* \
  && docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr \
  && docker-php-ext-install gd mysqli pdo_mysql zip opcache
COPY ./config/php.ini /usr/local/etc/php/conf.d/php.ini
php 서비스 에서 만난 구덩이
PHP 라 는 미 러 에서 소프트웨어 는 데 비 안 소스 를 사용 합 니 다.잘 알려 져 있 기 때문에 미 러 설치 가 성공 하지 못 할 수 있 습 니 다.그림 과 같 습 니 다.

이 럴 때 우 리 는 소스 를 바 꿔 야 한다.처음으로 중과 대의 소스 로 바 꾼 후에 안 된다 는 것 을 알 게 되 었 다.두 번 째 는 아 리 클 라 우 드 의 소스 로 바 뀌 었 고 미 러 설 치 를 완벽 하 게 완성 했다.수 정 된 Dockerfile 은 다음 과 같다.
FROM php:7.1-fpm
RUN sed -i 's/deb.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list \
  && apt-get update && apt-get install -y libpng12-dev libjpeg-dev \
  && rm -rf /var/lib/apt/lists/* \
  && docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr \
  && docker-php-ext-install gd mysqli pdo_mysql zip opcache
COPY ./config/php.ini /usr/local/etc/php/conf.d/php.ini
sed 명령 으로 소프트웨어 원본 파일 을 검색 하고 데 비 안 도 메 인 이름 을 아 리 클 라 우 드 도 메 인 이름 으로 변경 합 니 다.
php.ini
사용자 정의 php 설정.원 하 는 phop 설정 을 이 파일 에 넣 고 미 러 를 다시 빌 드 한 다음 phop 서 비 스 를 다시 시작 할 때 새로운 미 러 로 용 기 를 다시 만 듭 니 다.그러면 설정 이 적 용 됩 니 다.
memory_limit = 256Mpost_max_size = 100Mupload_max_filesize = 100M
Nginx
이미지 로 사용 할 미 러 를 지정 하 였 습 니 다.ports 는 발 표 된 포트 번 호 를 설정 하여 호스트 에 있 는 8000 개의 용기 80 을 설정 하 였 습 니 다.depends_on.서비스의 의존 도 를 설정 할 수 있 습 니 다.저 는 nginx 서 비 스 를 이전에 정 의 된 phop 에 의존 하 게 합 니 다.그러면 phop 을 먼저 시작 한 다음 에 nginx 를 시작 합 니 다.
또한 저 는 volumes 를 사용 하여 호스트 에 nginx 프로필 을 포함 하 는 디 렉 터 리 를 직접 설정 하여 용기 에 있 는 nginx 서비스의 프로필 디 렉 터 리 에 대응 하도록 했 습 니 다.그러면 저 는 이 컴퓨터 에서 nginx 프로필 을 수정 한 다음 에 nginx 서 비 스 를 다시 시작 하면 설정 이 유효 합 니 다.이 방법 은 개발 환경 에 적 용 됩 니 다.설정 을 수정 하면 미 러 를 다시 빌 드 할 필요 가 없 기 때 문 입 니 다.생산 환경 에서 이 nginx 미 러 를 직접 빌 드 하고 원 하 는 설정 을 미 러 에 복사 해 야 합 니 다.개발 단계 에서 nginx 로 그 를 볼 필요 가 있 습 니 다.그리고 로그 디 렉 터 리 를 용기 에 표시 하도록 설 정 했 습 니 다.마지막 주 소 는 코드 디 렉 터 리 입 니 다.
nginx:    image: nginx:1.12.2    ports:
      - "8000:80"    depends_on:
      - php    volumes:
      - ./services/nginx/config:/etc/nginx/conf.d
      - ./services/nginx/logs:/etc/nginx/logs/
      - ./app:/www/html/app
app.conf
./services/nginx/config/app.conf,이것 은 가장 기본 적 인 nginx 설정 파일 입 니 다.응용 루트 를 설정 한 것 은/www/html/app 입 니 다.호스트 의 app 디 렉 터 리 를 용기 에 있 는/www/html/app 에 마 운 트 했 습 니 다.
이 명령 에 주의 하 세 요:fastcgipass php:9000; 이 php 는 Google 이 정의 하 는 php 라 는 서비스의 이름 입 니 다.copose 파일 에서 정의 하 는 서비스 입 니 다.docker 에 DNS 기능 이 내장 되 어 있 기 때문에 서비스의 이름 으로 서로 의사 소통 을 할 수 있 습 니 다.

server {   
listen       80; 
server_name  localhost; 
root         /www/html/app;
# access_log  /etc/nginx/logs/app.access.log  main;
location / {        
	index  index.html index.htm index.php; 
	autoindex   on;
	#  include    /usr/local/etc/nginx/conf.d/php-fpm;
	#  # include  /usr/local/etc/nginx/conf.d/pathinfo.conf;
	if (!-e $request_filename) { 
	###     
	rewrite ^/(.*)$ /index.php/$1 last; ###        
	#rewrite ^/html/(.*)$ /uuabc_home/index.php/$1 last;
	}   
}
location = /info { 
	allow   127.0.0.1; 
	deny    all;
}   
location ~ \.php(.*)$  { 
	# comment try_files $uri =404; to enable pathinfo
	# try_files $uri =404;
	fastcgi_pass                php:9000; 
	fastcgi_index               index.php; 
	fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;   
	fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;   
	fastcgi_param PATH_INFO $fastcgi_path_info;  
	fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; 
	include /etc/nginx/fastcgi_params;
}   
# error_page  404     /404.html;
# error_page  403     /403.html;}
시동 을 걸다
위의 몇 가지 절 차 를 거 쳐 우 리 는 이미 PHP 개발 의 가장 기본 적 인 것 을 잘 해 냈 다.다음은 성 과 를 볼 준비 가 되 어 있다.
app 디 렉 터 리 아래 index.php 를 만 듭 니 다.내용 은:
항목 아래로 들 어가 서 실행:
docker-compose up
브 라 우 저 접근 열기http://localhost:8000/결 과 는 그림 과 같다.

데이터베이스 연결
app 디 렉 터 리 에 adminer.php 파일 이 있 습 니 다.이 파일 은 PHPmy admin 과 유사 한 데이터베이스 관리 도구 로 가 벼 운 수준 으로 접근 합 니 다.http://localhost:8000/adminer.php그림 에서 보 듯 이

폼 서버 옵션 에 my sql,사용자 이름 root,비밀 번 호 를 입력 하고 MySQL 서 비 스 를 설치 할 때의 root 비밀 번 호 를 입력 한 다음 로그 인 합 니 다.그림 참조:

그리고 우 리 는 데이터 베 이 스 를 즐겁게 관리 할 수 있다.
총결산
이로써 우 리 는 PHP 의 기본 개발 환경 에 대해 이미 설치 되 었 다.예 를 들 어 Redis 나 memcache 등 서 비 스 를 설치 해 야 한다 면 스스로 어머니 를 모시 고 스스로 손 을 쓸 수 있다.
이상 은 Mac 에서 docker 를 통 해 PHP 개발 환경 을 설정 하 는 방법 에 대한 상세 한 내용 입 니 다.Mac 에서 docker 를 통 해 PHP 개발 환경 을 설정 하 는 방법 에 대한 자 료 는 다른 관련 글 을 주목 하 십시오!

좋은 웹페이지 즐겨찾기