前置作業

已經申請好 Amazon Web Service 的EC2服務,並在EC2上裝好Ubuntu

準備好EC2的金鑰,本文範例金鑰 : my_aws_key.pem ( 請替換成你的金鑰名稱)

把金鑰放到等等要下指令的目錄

連線到AWS

先開啟mac terminal

連線到Amazon Web Service 的虛擬主機

本文範例主機位置 : ubuntu@ec2-xx-xx-xx-xxx.us-west-2.compute.amazonaws.com( 請替換成你的DNS名稱)

$ sudo ssh -i "my_aws_key.pem" ubuntu@ec2-xx-xx-xx-xxx.us-west-2.compute.amazonaws.com

如果連線後遇到此錯誤 , 代表你的金鑰權限設定不正確

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 WARNING: UNPROTECTED PRIVATE KEY FILE!
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0777 for 'my_aws_key.pem' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "my_aws_key.pem": bad permissions
Permission denied (publickey).

輸入以下指令更改金鑰權限後,再次連線

$ sudo chmod 400 my_aws_key.pem

順利連線到到Amazon Web Service 的虛擬主機後

Docker

安裝 Docker

$ wget -qO- https://get.docker.com/ | sh

設定 Docker權限

$ sudo usermod -aG docker $(whoami)

安裝 Docker Compose 需要的前置軟體

$ sudo apt-get -y install python-pip

安裝 Docker Compose

$ sudo pip install docker-compose

測試Docker與Docker Compose是否安裝成功

先建立資料夾給我們的 YAML 檔案

$ mkdir hello-world

進入資料夾

$ cd hello-world

現在用你最熟悉的文字編輯器建立 YAML 檔案 (本文範例使用 nano)

~/hello-world$ nano docker-compose.yml

docker-compose.yml:

拷貝以下文字,儲存檔案,離開文字編輯器

my-test: 
    image: hello-world

第一行代表container 名稱 第二行指定哪個 image 檔案要給此container用 本範例這個 image 會從 官方的Docker Hub 資源庫下載

建立 container:

~/hello-world$ docker-compose up

成功的話,你會看到下面的訊息代表安裝成功

Creating helloworld_my-test_1... Attaching to helloworld_my-test_1 my-test_1 | my-test_1 | Hello from Docker. my-test_1 | This message shows that your installation appears to be working correctly. my-test_1 |

離開 hello-world 資料夾

~/hello-world$ cd..

開始建立 wordpress Docker

建立資料夾

$ mkdir wordpress

進入資料夾

$ cd wordpress

建立 wordpress container 需要的 docker-compose.yml 檔案

~/wordpress$ nano docker-compose.yml

docker-compose.yml

version: '2'
services:
 web:
 imgae: wordpress
 environment:
 - WORDPRESS_DB_PASSWORD=password
 ports:
 - "80:80"
 depends_on:
 - mysql
 mysql:
 image: mysql:5.7
 volumes:
 - 'dbdata:/var/lib/mysql'
 ports:
 - "3306:3306"
 environment:
 - MYSQL_ROOT_PASSWORD=password
 - MYSQL_DATABASE=wordpress

volumes:
 dbdata:

重要! 請記得把 password 替換成您自訂的安全密碼!

- WORDPRESS_DB_PASSWORD=password Wordpress密碼
- MYSQL_ROOT_PASSWORD=password 資料庫密碼
- MYSQL_DATABASE=wordpress 資料庫名稱

mysql:
 ports:
 - "3306:3306"

可自行決定要不要把port對外,對外會有安全性問題

最後執行

$ docker-compose up -d

啟動Docker!

可以連線到AWS對外網址

開始設定WORDPRESS囉!