【轉】docker安裝PostgreSQL

來源:互聯網
上載者:User

標籤:不能   解釋   https   view   -name   http   html   head   cbo   

原文: 61204205

你先確認這兩件事:1)執行 docker exec -it dream.php bash,到 php 存放目錄看看,如果看不到你的檔案,目錄映射多半有問題;2)確認 fastcgi_param 設定的路徑,先配成絕對路徑(如上文)試試。

--------------------------------------------------------------------------------------------------------------------------------------

0 任務簡介
  • Ubuntu 16.04虛擬機器中安裝docker
  • 使用docker安裝PostgreSQL
  • 完成連接埠映射使得外部機器可以訪問虛擬機器中的資料庫
1 安裝docker

這一部分比較簡單,不過考慮到完整性,還是列出來吧。 
我這次選擇的是docker-ce,安裝流程如下:

1.1 建立 repository
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
  • 1
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
  • 1
sudo apt-key fingerprint 0EBFCD88
  • 1
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
  • 1
1.2 安裝docker
sudo apt-get update
  • 1
sudo apt-get install docker-ce
  • 1
2 安裝PostgreSQL
docker pull postgres:9.4
  • 1
3 建立容器

docker的容器預設情況下只能由本地主機訪問,即A主機上的容器不能被B主機訪問,所以要做連接埠映射。

docker run --name postgres1 -e POSTGRES_PASSWORD=password -p 54321:5432 -d postgres:9.4 
  • 1

解釋: 
run,建立並運行一個容器; 
--name,指定建立的容器的名字; 
-e POSTGRES_PASSWORD=password,設定環境變數,指定資料庫的登入口令為password; 
-p 54321:5432,連接埠映射將容器的5432連接埠映射到外部機器的54321連接埠; 
-d postgres:9.4,指定使用postgres:9.4作為鏡像。

3.1 驗證結果

之後運行docker ps -a,結果和下表類似:

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f6951e0c5c77 postgres:9.4 “docker-entrypoint…” 38 minutes ago Up 38 minutes 0.0.0.0:54321->5432/tcp postgres1
3.2 關鍵點

我自己安裝的過程中遇到了不少的坑,我認為最重要的一點是docker命令中參數的順序。

例如連接埠映射的-p 54321:5432的位置如果過於靠後,則會導致映射失敗。

4 串連資料庫

之前的準備工作都已完成,下一步就是從外部存取資料庫了。 
這一步就很常規了:

psql -U postgres -h 192.168.100.172 -p 54321
  • 1

注意: 
postgres鏡像預設的使用者名稱為postgres, 
登陸口令為建立容器是指定的值。

5 參考文獻

[1] docker官網 
[2] postgres鏡像官方文檔 
[3] 非常詳細的 Docker 學習筆記

------------------------------------------------------------------------------------------docker nginx php-fpm 的配置----------------------------

原文:1190000007056245

看完 docker 官方教程,想搭個本地 php 開發環境,可搜了一圈,也沒找到特別滿意的文章,順手總結一個。

假設
  • 你知道 nginx、php-fpm 是什麼
  • 你瞭解 docker 的基本命令
運行環境

MacBook Pro,OSX 10.11.5

啟動 php-fpm

解釋執行 php 需要 php-fpm,先讓它運行起來:

docker run --name dream-php -d     -v ~/Workspace/tmp/www:/var/www/html:ro     php:7.1-fpm

說明:

  • dream-php 是容器的名字。
  • ~/Workspace/tmp/www 是本地 php 檔案的儲存目錄,/var/www/html 是容器內 php 檔案的儲存目錄,ro 表示唯讀。
編輯 nginx 設定檔

本機存放區路徑:

~/Workspace/tmp/docker/nginx/conf.d/default.conf

設定檔內容:

server {    listen       80;    server_name  localhost;    location / {        root   /usr/share/nginx/html;        index  index.html index.htm;    }    error_page   500 502 503 504  /50x.html;    location = /50x.html {        root   /usr/share/nginx/html;    }    location ~ \.php$ {        fastcgi_pass   php:9000;        fastcgi_index  index.php;        fastcgi_param  SCRIPT_FILENAME  /var/www/html/$fastcgi_script_name;        include        fastcgi_params;    }}

說明:

  • php:9000 表示 php-fpm 服務的 URL,下文還會提及。
  • /var/www/html 是 dream-php 中 php 檔案的儲存路徑,經 docker 映射,變成本地路徑 ~/Workspace/tmp/www(可以再看一眼 php-fpm 啟動命令)
啟動 nginx
docker run --name dream-nginx -p 80:80 -d     -v ~/Workspace/tmp/www:/usr/share/nginx/html:ro     -v ~/Workspace/tmp/docker/nginx/conf.d:/etc/nginx/conf.d:ro     --link dream-php:php     nginx

說明:

  • -p 80:80 用於添加連接埠映射,把 dream-nginx 中的 80 連接埠暴露出來。
  • ~/Workspace/tmp/www 是本地 html 檔案的儲存目錄,/usr/share/nginx/html 是容器內 html 檔案的儲存目錄。
  • ~/Workspace/tmp/docker/nginx/conf.d 是本地 nginx 設定檔的儲存目錄,/etc/nginx/conf.d 是容器內 nginx 設定檔的儲存目錄。
  • --link dream-php:php 把 dream-php 的網路併入 dream-nginx,並通過修改 dream-nginx 的 /etc/hosts,把網域名稱 php 映射成 127.0.0.1,讓 nginx 通過 php:9000 訪問 php-fpm。
測試結果

在 ~/Workspace/tmp/www 下放兩個檔案:

index.html

<html><body><h1>Hello World</h1></body></html>

phpinfo.php

<?php phpinfo();

接下來看結果吧:

  • http://localhost
  • http://localhost/phpinfo.php

如果看到 Hello World 和熟悉的 phpinfo,那麼大功告成。

訪問 index.html 時,nginx 讀的是 /usr/share/nginx/html/index.html,這個路徑經 dream.nginx 轉換變成本地的 ~/Workspace/tmp/www/index.html。

訪問 phpinfo.php 時,nginx 讓 php-frm 執行 /var/www/html/phpinfo.php,這個路徑經 dream.php 轉換成 ~/Workspace/tmp/www/phpinfo.php。

FAQ

怎樣觀察容器內檔案系統:

 
docker exec -it dream-nginx bash

【轉】docker安裝PostgreSQL

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.