VirtualBox의 CentOS7에 docker로 postgresql + PHP + Apache 환경 구축
6128 단어 PHPVirtualBox아파치PostgreSQL도커
소개
상당한 기간이 비어 있었지만,
로컬 환경에 VirtualBox를 사용하여 개발 환경을 구축하는 작업의 세 번째입니다.
전회은 DB 서버,
지난번은 웹 서버를 구축했습니다.
이번에는 DB 서버 + WEB 서버 + PHP 앱 환경을 구축합니다.
이미지로서는, DB의 값을 취득해, WEB 서버상에 PHP로 표시합니다.
작업환경
1.Docker Compose
이번에는 "Docker Compose"를 사용하여 여러 서버를 한 번에 작동하는 절차로 요약합니다.
설치 절차는 공식 사이트의 지침을 참조하십시오.
2. 디렉토리 구성
이번에는 이하의 구성으로 각 파일을 준비했습니다.
docker-php-postgres
┣ docker-compose.yml // Docker Composeの設定ファイル(3.参照)
┣ docker-file
┃ ┣ db
┃ ┃ ┣ Dockerfile // DBサーバ用のDockerfile(4.参照)
┃ ┃ ┣ docker-entrypoint-initdb.d
┃ ┃ ┣ 01_createdb.sql // DB作成用SQL
┃ ┣ web
┃ ┣ Dockerfile // WEBサーバ用のDockerfile(6.参照)
┃ ┣ php.ini // PHP設定ファイル(7.参照)
┣ volumes
┣ web
┣ html
┣ index.php // PHPファイル(8.参照)
3. docker-compose.yml
version: '3'
services:
web:
build: ./docker-file/web/
ports:
- 8080:80
volumes:
- ./volumes/web/html/:/var/www/html:z // :zを忘れないように。
depends_on:
- db
db:
build: ./docker-file/db/
ports:
- 5432:5432
environment:
- POSTGRES_USER=testuser
- POSTGRES_PASSWORD=password
4. DB 서버용 Dockerfile
FROM postgres:9.3
RUN apt-get update
RUN apt-get install -y vim less
COPY ./docker-entrypoint-initdb.d/01_createdb.sql /docker-entrypoint-initdb.d/
EXPOSE 5432
5. DB 작성용 SQL
DB 작성용 SQL 및 테이블 작성 SQL 파일을 docker-entrypoint-initdb.d 아래에 작성합니다.
이번에는 "01_createdb.sql"이라는 이름으로
testdb라는 DB, test_table이라는 테이블을 만듭니다.
test_table 테이블에는 id 열과 keyword 열을 준비하고,
적절한 값을 설정하십시오.
6. WEB 서버용 Dockerfile
# Apache モジュールが同梱された PHP コンテナイメージ
FROM php:apache
RUN apt-get update
RUN apt-get install -y vim less
# Postgres関連のPHPエクステンションをインストール
RUN set -ex apk --no-cache add postgresql-dev libpq-dev
RUN apt-get install -y libpq-dev && docker-php-ext-install pdo pdo_pgsql pgsql mbstring
# PHPの設定ファイルをコピー
COPY ./php.ini /usr/local/etc/php/
7. PHP 설정 파일
[Core]
display_errors = On
error_reporting = E_ALL
error_log = /var/log/apache2/error.log
log_errors = On
[Date]
date.timezone = 'Asia/Tokyo'
[mbstring]
mbstring.language = Japanese
mbstring.internal_encoding = auto
mbstring.http_input = auto
mbstring.http_output = auto
mbsting.encoding_translation = Off
mbstring.detect_order = auto
8. PHP 파일
DB의 테이블 내용을 가져와 출력하는 간단한 PHP 파일입니다.
$conn = "host=docker-php-postgres_db_1 port=5432 dbname=testdb user=testuser password=password";
$link = pg_connect($conn);
if (!$link) {
exit('接続失敗です。'.pg_last_error());
}
pg_set_client_encoding("sjis");
$result = pg_query('SELECT id, keyword FROM test_table');
if (!$result) {
exit('クエリーが失敗しました。'.pg_last_error());
}
for ($i = 0 ; $i < pg_num_rows($result) ; $i++){
$rows = pg_fetch_array($result, NULL, PGSQL_ASSOC);
print('id='.$rows['id']);
print(',keyword='.$rows['keyword'].'<br>');
}
$close_flag = pg_close($link);
if (!$close_flag){
print('切断に失敗しました。<br>');
}
?>
</body>
</html>
9. 컨테이너 시작
3. ~ 8. 파일이 준비되면 다음 명령을 실행합니다.
이 명령은 빌드까지 수행합니다.
$ docker-compose up -d
빌드만 수행하려면 다음 명령을 실행합니다.
$ docker-compose build
명령을 실행한 후 컨테이너가 시작되었는지 여부를 다음 명령으로 확인합니다.
$ docker-compose ps
root@localhost docker-php-postgres]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f078f9167ad6 docker-php-postgres_web "docker-php-entryp..." 41 seconds ago Up 36 seconds 0.0.0.0:8080->80/tcp docker-php-postgres_web_1
c51a280c6d44 docker-php-postgres_db "docker-entrypoint..." 45 seconds ago Up 41 seconds 0.0.0.0:5432->5432/tcp docker-php-postgres_db_1
시작이 끝나면 브라우저에서 시작한 웹 서버의 index.php에 액세스해보십시오.
액세스하고 테이블의 내용이 표시되면 완료됩니다.
http://【VirtualBox IP 주소】:8080/index.php
10. 컨테이너 정지
컨테이너 중지는 다음 명령을 실행합니다.
$ docker-compose stop
이제 DB 서버 + WEB 서버 + PHP 앱의 환경을 구축할 수 있었습니다.
이번 학습한 것을 바탕으로,
docker를 사용한 다양한 환경 구축을 실시하고 싶습니다.
참고 URL
htps //w w. 케 y-p. 이 m/bぉg/s 탓 f/아 rゔぇs/106755
htps : // / cs. 도 c r. 코 m / 코 m 포세 / 인 s 타르 /
htps : // 코 m / 보라 / ms / fb14d99d3323bd2 예 9d
htps : //미조민톤. 하테나 bぉg. jp / 엔트리 / 도 c 케 루카케 php1.3
htps : // 코 m / 나기 244 / ms / 5에 6fc062fdc5004 9
Reference
이 문제에 관하여(VirtualBox의 CentOS7에 docker로 postgresql + PHP + Apache 환경 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/spaciba_h_t/items/de60e663cc810aee29cf텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)