2018年9月11日 星期二

[測試] 在 Synology Nas 上用 docker 架設 Nginx


秉持著 one process per container 的原則讓我們先來備料...

首先我們需要:

然後就可以開始架設...
蛤?
你喜歡用 cmd 裝逼?
什麼?
你忘了要去哪學?
沒關係沒關係,
煮煮把他留在這裡 [docker]
忘記指令的同學可以先去複習一下,
接下來讓我們開始動手做吧!
(cgi 的操作可以參考 cmd)


    1. 首先先把 mysql 架起來
sudo docker run 
  --restart=always 
  -d --name mysql-server 
  -p 3306:3306 -e MYSQL_ROOT_PASSWORD=[這裡輸入你登入這台 server 用的密碼]
  -e MYSQL_DATABASE=[這裡輸入你要建立的資料庫名稱]
  -e MYSQL_USER=[這裡輸入你要建立的資料庫使用者帳號]
  -e MYSQL_PASSWORD=[這裡輸入資料庫使用者的密碼]
mysql/mysql-server:8.0.4

   2. 接著架設 php
sudo docker run
  --restart=always
  -d --name php7-2-9
  -p [隨便選個你喜歡且不是保留用的 port]:9000
  --link mysql-server
  -e DB_HOST=mysql-server
  -v [project 的存放位置]:[要映射到 container 的位置]
  -w [project 的存放位置]
php:7.2.9-fpm

    3. 然後架設 nginx
sudo docker run
  --restart=always
  -d --name nginx1-9-9
  -p 80:80
  --link php7-2-9
  -v [project 的存放位置]:[要映射到 container 的位置]
  -v [你寫好的 default.conf 的存放位置]:/etc/nginx/conf.d/default.conf
nginx:1.9.9

    p.s 懶得找的話可以參考煮煮的 default.conf
server {
    listen 80 default_server;
    server_name localhost;
    root [映射到 container 的位置];
    index index.php index.html index.htm;
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
    error_page 404 /index.php;
    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass php7-2-9:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param DB_HOST mysql-server;
    }
    location ~ /\.ht {
        deny all;
    }
}

備註:

  • --name 的部分有改動的話其他地方別忘了改
  • 圖形介面比較好用,初學的話當然是建議你直接用介面操作,然後再比對指令
  • 如果你的操作過程有問題,可以善用 curl localhost:80 來檢查會比較快

沒問題的話應該會像我這樣...



然後可以來試吃啦!
隨便放個 phpinfo 來看看~
是不是很神奇啊~~~