[GCP] Google cloud Docker-compose wordpress 구성

 

도메인만 있으면 1년간 무료로 쓸수 있는 Google cloud 를 이용하여 WordPress 를 구성하여 사용하는것도 좋을거 같습니다. 🙂

기존 생성했던 VM 을 사용 하기 때문에 최초로 만든 vm 이미지에서 수정을 합니다.

Compute Engine -> VM 인스턴스 -> 인스턴스 이름 클릭 후 수정을 클릭합니다.

 

초소형(공유vCPU 1개) -> 소형 (공유 vCPU 1개) 로 변경후 저장을 클릭합니다.

 

VM 인스턴스를 시행후 SSH로 접속을 합니다.

 

docker 설치

test@ubuntu-trusty-1:~$ curl -s https://get.docker.com/ | sudo sh
test@ubuntu-trusty-1:~$ sudo usermod -aG docker test

터미널을 재접속 합니다.

 

docker 설치 확인

test@ubuntu-trusty-1:~$ docker --version
Docker version 18.02.0-ce, build fc4de44
test@ubuntu-trusty-1:~$

 

docker-compose 설치

test@ubuntu-trusty-1:~$ sudo curl -L https://github.com/docker/compose/releases/download/1.19.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   617    0   617    0     0   2762      0 --:--:-- --:--:-- --:--:--  2766
100 8288k  100 8288k    0     0  7366k      0  0:00:01  0:00:01 --:--:-- 17.6M
test@ubuntu-trusty-1:~$ sudo chmod +x /usr/local/bin/docker-compose
test@ubuntu-trusty-1:~$ docker-compose --version
docker-compose version 1.19.0, build 9e633ef
test@ubuntu-trusty-1:~$

 

Nginx-proxy container

test@ubuntu-trusty-1:~$ mkdir -p web-service/nginx-proxy
test@ubuntu-trusty-1:~$ cd web-service/nginx-proxy/
test@ubuntu-trusty-1:~/web-service/nginx-proxy$ vi docker-compose.yml
version: "3"

services:
  nginx-proxy:
    image: jwilder/nginx-proxy
    container_name: nginx-proxy
    ports:
      - "80:80"
    volumes:
      - /var/run/docker.sock:/tmp/docker.sock:ro
    restart: always

networks:
  default:
    external:
      name: nginx-proxy

 

Nginx-proxy container 실행

test@ubuntu-trusty-1:~/web-service/nginx-proxy$ docker network create nginx-proxy
6e66bd966be8c43541585319e0516c3350d5b1d852789ca4efd93ee9ef446589
test@ubuntu-trusty-1:~/web-service/nginx-proxy$ docker-compose up -d --build
test@ubuntu-trusty-1:~/web-service/nginx-proxy$ docker ps
CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS              PORTS                NAMES
b4bbe5ac5015        jwilder/nginx-proxy   "/app/docker-entrypo…"   4 seconds ago       Up 3 seconds        0.0.0.0:80->80/tcp   nginx-proxy
test@ubuntu-trusty-1:~/web-service/nginx-proxy$

 

 

WordPress container

blog docker-compose.yml 파일 생성

test@ubuntu-trusty-1:~$ mkdir -p web-service/blog
test@ubuntu-trusty-1:~$ cd web-service/blog/
test@ubuntu-trusty-1:~/web-service/blog$ mkdir web-data
test@ubuntu-trusty-1:~/web-service/blog$ mkdir db-data
test@ubuntu-trusty-1:~/web-service/blog$ vi docker-compose.yml
 version: "3"

services:
  db:
     image: mariadb
     volumes:
       - ./db-data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: test1234
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: test1234
     container_name: wp_blog_db

  wordpress:
     image: wordpress:latest
     expose:
       - 80
     restart: always
     volumes:
       - ./web-data:/var/www/html
     environment:
       VIRTUAL_HOST: blog.crois.net
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: test1234
     container_name: wp_blog

networks:
  default:
    external:
      name: nginx-proxy

 

WordPress container 실행

test@ubuntu-trusty-1:~$ cd web-service/blog/
test@ubuntu-trusty-1:~/web-service/blog$ docker-compose up -d --build
~중략
실행확인
test@ubuntu-trusty-1:~/web-service/blog$ docker ps
CONTAINER ID        IMAGE                 COMMAND                  CREATED              STATUS              PORTS                NAMES
7d728447bde6        mariadb               "docker-entrypoint.s…"   8 seconds ago        Up 7 seconds        3306/tcp             wp_blog_db
9415c6dd76e1        wordpress:latest      "docker-entrypoint.s…"   8 seconds ago        Up 7 seconds        80/tcp               wp_blog
b4bbe5ac5015        jwilder/nginx-proxy   "/app/docker-entrypo…"   About a minute ago   Up About a minute   0.0.0.0:80->80/tcp   nginx-proxy
test@ubuntu-trusty-1:~/web-service/blog$

 

web browser 에서 http://blog.crois.net 을 연결 합니다.

수고 하셨습니다. 🙂

 

 

 

 

[GCP] Google cloud 외부 IP 주소 연결 (고정IP 설정)

 

VPC 네트워크 -> 외부 IP 주소 를 클릭합니다.

고정 주소 예약을 클릭합니다.

 

이름을 지정합니다. 지역에서 Zone 을 설정 할수 있습니다.

 

예약 버튼을 클릭합니다.

 

외부 IP 주소 연결이 생성 되었습니다.

 

Compute Engine -> VM 인스턴스 항목으로 이동 합니다.

vm 이름을 클릭 합니다. (ubuntu-trusty-1)

 

 

 

VM 인스턴스 세부정부 에서 네트워크 인터페이스 항목 nic0: default default 를 클릭합니다.

 

외부 IP 항목 에서 임시를 클릭한후 IP 주소만들기를 선택합니다.

 

새 고정 IP 주소 예약 에서 test01 을 입력합니다.

 

예약을 클릭합니다.

 

최하단으로 이동하여 저장을 클릭합니다.

 

ssh 연결 테스트를 진행 합니다.

[GCP] Google Cloud ssh-key 이용하여 접속

Linux 의 경우 ssh-keygen 명령어를 통하여 아래와 같이 RSA 키페어를 생성 하고,

Windows는 puttygen 을 이용하여 RSA 키페어를 생성 합니다.

Global 모든 Cloud 인스턴스에 접속시 메타데이터 ssh 키 부분에 설정 하시면 되며 단인 Cloud 인스턴스만 접속하기 위해선 Compute Engine -> VM 인스턴스 세부정보 부분의

SSH 키 부분에 등록 하시면 됩니다.

 

Linux 나 MacOS 이용시

RSA 키페어 생성

주의: 키페어 생성시 반드시 Password 를 입력해야 합니다.

엔터를 눌러 스킵시 정상적으로 접속할수 없습니다.

test@docker-test:~$ ssh-keygen -t rsa -C "test@google.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/home/test/.ssh/id_rsa):
Created directory '/home/test/.ssh'.
Enter passphrase (empty for no passphrase):       // Password 입력
Enter same passphrase again:                      // Password 입력
Your identification has been saved in /home/test/.ssh/id_rsa.
Your public key has been saved in /home/test/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:cJ23OKMOchEWj3oIpyMBKPvdDXlYoeChKovlBuIj1ok test@google.com
The key's randomart image is:
+---[RSA 2048]----+
|o   o . ..       |
|+  o o =.. .     |
|o.o o *+o o .    |
|.o + +++.  o .   |
|*.+.o.o+S + .    |
|=*+.o..... o     |
|+Eoo. o .        |
|o..  o o         |
|        .        |
+----[SHA256]-----+
test@docker-test:~$

키생성시 사용하는 암호를 통하여 ssh 로 접속을 하게 됩니다.

 

id_rsa.pub 퍼블릭키 위치

test@docker-test:~/.ssh$ pwd
/home/test/.ssh
test@docker-test:~/.ssh$ ls
id_rsa  id_rsa.pub
test@docker-test:~/.ssh$

해당 파일(id_rsa.pub) 을 scp 로 Copy 후 Google 클라우드에 등록 합니다.

 

퍼블릭 키 등록

compute engine -> 메타데이터 -> SSH키로 이동 합니다.

+항목추가를 클릭하여 ~/.ssh/id_rsa.pub 내용을 붙여 넣기 합니다.

메타데이터에 key를 추가 하게 되면 해당 키를 통하여 모든 인스턴스에 접속 가능합니다.

저장을 클릭합니다.

 

 ssh 접속

사용하고 있는 Linux 머신에서 접속시 아래와 같은 방법으로 접속하실수 있습니다.

test@docker-test:~/.ssh$ ssh -i id_test google_user@35.xx.xx.200
Warning: Identity file id_test.pub not accessible: No such file or directory.
The authenticity of host '35.xx.xx.200 (35.xx.xx.200)' can't be established.
ECDSA key fingerprint is SHA256:IEUCgjm+1KuzORwPmQH/Vo6SnCztScOWBehFCoSOveo.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '35.xx.xx.200' (ECDSA) to the list of known hosts.
Enter passphrase for key '/home/test/.ssh/id_rsa':
Welcome to Ubuntu 14.04.5 LTS (GNU/Linux 4.4.0-112-generic x86_64)

 * Documentation:  https://help.ubuntu.com/

  System information as of Tue Feb 27 08:14:28 UTC 2018

  System load:  0.0               Processes:           80
  Usage of /:   12.3% of 9.81GB   Users logged in:     0
  Memory usage: 14%               IP address for eth0: xx.xx.0.2
  Swap usage:   0%

  Graph this data and manage this system at:
    https://landscape.canonical.com/

  Get cloud support with Ubuntu Advantage Cloud Guest:
    http://www.ubuntu.com/business/services/cloud

0 packages can be updated.
0 updates are security updates.

New release '16.04.3 LTS' available.
Run 'do-release-upgrade' to upgrade to it.

Your Hardware Enablement Stack (HWE) is supported until April 2019.

Last login: Tue Feb 27 08:14:28 2018 from xx.xxx.xx.164
test@ubuntu-trusty-1:~$

 

 

 

Windows 이용시

puttygen 을 이용하여 RSA 키페어를 생성 합니다.

링크에서 iPutty  를 다운 받을수 있습니다.
https://github.com/iPuTTY/iPuTTY/releases

생성버튼 클릭

개인키 저장 버튼을 클릭 합니다.

 

개인키 instance_name.ppk 으로 저장합니다.

아래 부분을 복사 하여 퍼블릭키를 등록 합니다.

 

Google Cloud 에서 Compute Engine -> 메타데이타 -> SSH 키로 이동합니다.

저장을 클릭합니다.

 

ssh-client 를 실행합니다. (putty 이용)

 

Connection -> SSH -> Auth 로 이동후 Browse… 에서 저장한 키파일을 불러 옵니다.

Open 을 클릭 합니다. 

 

접속후 화면

 

단일 인스턴스 접속시 설정 방법

별도의 인스턴스 재시작이 필요하지 않으며 아래와 같은 방법으로 등록만 해주시면 됩니다.

Compute Engine -> VM 인스턴스

ssh key 를 추가할 인스턴스를 클릭합니다.

 

수정을 클릭합니다.

 

페이지 하단에 SSH 키 부분에 추가 하시면 됩니다.

 

페이지 하단의 저장을 클릭합니다.

 

접속시 위와 동일한 방법으로 접속 하시면 됩니다.