[AWS 실습] EFS(Elastic File System) 사용해보기
<NFS설정>
-도커가 1개가 아닌 swarm으로 구성되어있기에 전체에 적용을 위해 공유 디렉터리를 생성하여 마운트
-AWS 보안그룹에 2049 TCP포트 개방해주기
sudo apt-get -y install nfs-kernel-server
#위는 ubuntu, 아래는 Amazon Rinux
#sudo yum -y install nfs-utils
sudo systemctl restart nfs-server
#위는 ubuntu, 아래는 Amazon Rinux
#sudo systemctl restart nfs-utils
sudo mkdir /shared
sudo chmod -R 777 /shared/
sudo vi /etc/exports
/shared *(rw,no_root_squash,no_subtree_check)
#임시로..전체 대역대로해둠주의
sudo exportfs -r
sudo showmount -e
#출력 화면
#Export list for NFS:
#/shared *
sudo systemctl restart nfs-server
sudo apt-get -y install nfs-common
#위는 ubuntu, 아래는 Amazon Rinux
#sudo yum -y install nfs-utils
sudo showmount -e 10.20.30.100
#출력화면
#Export list for 10.20.30.100:
#/shared *
sudo mkdir /remote
sudo mount -t nfs 10.20.30.100:/shared /remote
<web.yml 내용 수정>
#Manager 노드의 Docker-compose 파일 수정
vi web.yml
volumes:
- /remote/wordpress:/var/html/www
#=>wordpress컨테이너의 volumes를 위의 내용으로 수정 ,
#worker에 있는 remote/wordpress 디렉터리를 컨테이너의 /var/html/www 디렉터리에 마운트
sudo docker stack deploy --compose-file=web.yml web
#=>수정한 내용으로 web.yml을 재배포한다
#docker-swarm에 wordpress 설치
#외부 데이터베이스 연결
version: '3'
services:
wordpress:
image: wordpress
deploy:
replicas: 3
placement:
constraints: [node.role != manager]
restart_policy:
condition: on-failure
max_attempts: 3
volumes:
- /remote/wordpress:/var/www/html
environment:
SERVICE_PORTS: 80
WORDPRESS_DB_HOST: database-1.cgmf5deyqagt.us-east-1.rds.amazonaws.com
WORDPRESS_DB_USER: admin
WORDPRESS_DB_PASSWORD: test1234
WORDPRESS_DB_NAME: wpdb
networks:
- web
proxy:
image: dockercloud/haproxy
depends_on:
- wordpress
volumes:
- /var/run/docker.sock:/var/run/docker.sock
ports:
- 80:80
networks:
- web
deploy:
mode: global
placement:
constraints: [node.role == manager]
visual:
image: dockersamples/visualizer
ports:
- "8080:8080"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
deploy:
mode: global
placement:
constraints: [node.role == manager]
networks:
web:
external: true