Vagrant+CoreOS+Docker로 호스트 OS와 독립적인 로컬 개발 환경 만들기
7571 단어 docker-composeCoreOS도커Vagrant
이제 호스트 OS에 의존하는 개발 환경은 싫다!
그렇다고 해서, 커맨드 일발로 가상 개발 환경을 할 수 있는 구조를 VirtualBox+Vagrant+CoreOS+Docker로 실현해 보았습니다.
구성
호스트 OS(Win or Mac)에 VirtualBox를 두고, 그 안에 CoreOS의 머신을 세우고, 그 안에 Docker의 컨테이너가 늘어서 있는 것 같은 구성을 만듭니다.
폴더 구성
app/var/public_html
안에 제품의 소스 코드가 들어가는 이미지입니다.
이번에는 여러 하위 도메인에서 액세스하는 서비스였기 때문에 프록시 서버도 세웠습니다.
Vagrant 구축
Vagrantfile에서 docker-compose를 설치하고 docker를 시작하고 공유 폴더를 마운트합니다.
Vagrantfile# -*- mode: ruby -*-
# # vi: set ft=ruby :
Vagrant.configure("2") do |config|
config.ssh.insert_key = false
config.vm.box = "coreos-alpha"
config.vm.box_url = "https://storage.googleapis.com/alpha.release.core-os.net/amd64-usr/current/coreos_production_vagrant.json"
config.vm.provider :virtualbox do |v|
v.check_guest_additions = false
v.functional_vboxsf = false
v.memory = 2048
v.cpus = 2
end
if Vagrant.has_plugin?("vagrant-vbguest") then
config.vbguest.auto_update = false
end
config.vm.network :private_network, :ip => "192.168.33.10"
# docker-composeのインストール
config.vm.provision :shell, inline: <<-SHELL
mkdir -p /opt/bin
curl -L https://github.com/docker/compose/releases/download/1.12.0/docker-compose-`uname -s`-`uname -m` > /opt/bin/docker-compose
chmod +x /opt/bin/docker-compose
SHELL
# coreosの自動アップデートを無効にする
config.vm.provision :shell, inline: <<-SHELL
sudo systemctl stop update-engine
SHELL
# 共有フォルダの作成
config.vm.synced_folder "./share", "/home/core/share", :nfs => true, :mount_options => ["nolock,vers=3,udp"]
config.vm.provision :shell, privileged: false, inline: <<-SHELL
cd ~/share/proxy && docker-compose build
cd ~/share/app && docker-compose build
SHELL
# docker起動
config.vm.provision "shell", run: 'always',privileged: false, inline: <<-SHELL
cd ~ && docker network create --driver bridge proxy
cd ~/share/proxy && docker-compose up -d 1>&2
cd ~/share/app && docker-compose up -d 1>&2
SHELL
config.ssh.forward_agent = true
# プロジェクトのClone
config.vm.provision "shell", privileged: false, inline: <<-SHELL
echo -e "Host gitlab.com" > ~/.ssh/config
echo -e " StrictHostKeyChecking no" >> ~/.ssh/config
sudo mkdir -p ~/share/app/var/public_html
cd ~/share/app/var/public_html && git clone [email protected]:hogehoge
SHELL
end
애플리케이션 기반 Docker 구축
웹 서버와 DB 서버, memcached 컨테이너를 만듭니다. 이번에는 phpMyAdmin도 넣어 보았습니다.
app/docker-compose.ymlversion: '2'
services:
mysqldata:
image: busybox
container_name: my_db_data
volumes:
- /var/lib/mysql
# mysql
mydb:
image: mysql:5.6
container_name: my_db
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: root
volumes:
- ./files/mysql_conf:/etc/mysql/conf.d
- ./var/public_html/sql:/docker-entrypoint-initdb.d
volumes_from:
- mysqldata
# web
myweb:
build: ./web
image: web:24
container_name: my_web
environment:
VIRTUAL_HOST: hoge.dev
VIRTUAL_PORT: 80
links:
- mydb:mydb
- memcached
volumes:
- ./var/public_html:/var/www/public_html
- ./var/logs:/var/log/httpd
- ./files/apache_conf/vhosts.conf:/etc/httpd/conf.d/vhosts.conf
- ./files/php_conf/php.ini:/etc/php.ini
# memcacheの構築
memcached:
image: memcached
# phpMyAdminの構築
phpmyadmin:
image: phpmyadmin/phpmyadmin
environment:
- PMA_ARBITRARY=1
- PMA_HOST=mydb
- PMA_USER=root
- PMA_PASSWORD=root
links:
- mydb
ports:
- 8080:80
networks:
default:
external:
name: proxy
Apache의 설정 파일이나 php.ini도 git 관리하고 거기에서 Docker에 전달하도록 해 버립니다.
데이터베이스 덤프 데이터도 DB 컨테이너의 /docker-entrypoint-initdb.d
아래에 놓아 컨테이너 빌드 시 자동으로 가져옵니다.
프록시 Docker 구축
Nginx에서 프록시 서버를 빌드합니다.
proxy/docker-compose.ymlversion: "2"
services:
proxy:
image: jwilder/nginx-proxy
container_name: proxy
ports:
- "80:80"
- "443:443"
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
- ./certs:/etc/nginx/certs:ro
- ./conf.d:/etc/nginx/conf.d
restart: always
logging:
options:
max-size: 5m
max-file: "10"
networks:
default:
external:
name: proxy
여기까지 할 수 있으면, 나머지는 hosts에 192.168.33.10 hoge.dev
를 기재해 Vagrant up
하면, ㅡㅇㅇㅇㅇ 에서 v 로 개발 환경을 볼 수 있게 됩니다.
요약
CoreOS는 컨테이너 이용에 특화된 OS이므로 Docker와 매우 궁합이 좋습니다.
그리고, 이번은 Docker측에서 본 호스트 머신은 CoreOS이므로, 자주 흔한 Windows에서 움직이지 않는 문제가 일어나지 않고, 모두 해피가 될 수 있네요.
Reference
이 문제에 관하여(Vagrant+CoreOS+Docker로 호스트 OS와 독립적인 로컬 개발 환경 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/keisuke_kimura/items/2bcd2573e729b14555c7
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
app/var/public_html
안에 제품의 소스 코드가 들어가는 이미지입니다.이번에는 여러 하위 도메인에서 액세스하는 서비스였기 때문에 프록시 서버도 세웠습니다.
Vagrant 구축
Vagrantfile에서 docker-compose를 설치하고 docker를 시작하고 공유 폴더를 마운트합니다.
Vagrantfile# -*- mode: ruby -*-
# # vi: set ft=ruby :
Vagrant.configure("2") do |config|
config.ssh.insert_key = false
config.vm.box = "coreos-alpha"
config.vm.box_url = "https://storage.googleapis.com/alpha.release.core-os.net/amd64-usr/current/coreos_production_vagrant.json"
config.vm.provider :virtualbox do |v|
v.check_guest_additions = false
v.functional_vboxsf = false
v.memory = 2048
v.cpus = 2
end
if Vagrant.has_plugin?("vagrant-vbguest") then
config.vbguest.auto_update = false
end
config.vm.network :private_network, :ip => "192.168.33.10"
# docker-composeのインストール
config.vm.provision :shell, inline: <<-SHELL
mkdir -p /opt/bin
curl -L https://github.com/docker/compose/releases/download/1.12.0/docker-compose-`uname -s`-`uname -m` > /opt/bin/docker-compose
chmod +x /opt/bin/docker-compose
SHELL
# coreosの自動アップデートを無効にする
config.vm.provision :shell, inline: <<-SHELL
sudo systemctl stop update-engine
SHELL
# 共有フォルダの作成
config.vm.synced_folder "./share", "/home/core/share", :nfs => true, :mount_options => ["nolock,vers=3,udp"]
config.vm.provision :shell, privileged: false, inline: <<-SHELL
cd ~/share/proxy && docker-compose build
cd ~/share/app && docker-compose build
SHELL
# docker起動
config.vm.provision "shell", run: 'always',privileged: false, inline: <<-SHELL
cd ~ && docker network create --driver bridge proxy
cd ~/share/proxy && docker-compose up -d 1>&2
cd ~/share/app && docker-compose up -d 1>&2
SHELL
config.ssh.forward_agent = true
# プロジェクトのClone
config.vm.provision "shell", privileged: false, inline: <<-SHELL
echo -e "Host gitlab.com" > ~/.ssh/config
echo -e " StrictHostKeyChecking no" >> ~/.ssh/config
sudo mkdir -p ~/share/app/var/public_html
cd ~/share/app/var/public_html && git clone [email protected]:hogehoge
SHELL
end
애플리케이션 기반 Docker 구축
웹 서버와 DB 서버, memcached 컨테이너를 만듭니다. 이번에는 phpMyAdmin도 넣어 보았습니다.
app/docker-compose.ymlversion: '2'
services:
mysqldata:
image: busybox
container_name: my_db_data
volumes:
- /var/lib/mysql
# mysql
mydb:
image: mysql:5.6
container_name: my_db
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: root
volumes:
- ./files/mysql_conf:/etc/mysql/conf.d
- ./var/public_html/sql:/docker-entrypoint-initdb.d
volumes_from:
- mysqldata
# web
myweb:
build: ./web
image: web:24
container_name: my_web
environment:
VIRTUAL_HOST: hoge.dev
VIRTUAL_PORT: 80
links:
- mydb:mydb
- memcached
volumes:
- ./var/public_html:/var/www/public_html
- ./var/logs:/var/log/httpd
- ./files/apache_conf/vhosts.conf:/etc/httpd/conf.d/vhosts.conf
- ./files/php_conf/php.ini:/etc/php.ini
# memcacheの構築
memcached:
image: memcached
# phpMyAdminの構築
phpmyadmin:
image: phpmyadmin/phpmyadmin
environment:
- PMA_ARBITRARY=1
- PMA_HOST=mydb
- PMA_USER=root
- PMA_PASSWORD=root
links:
- mydb
ports:
- 8080:80
networks:
default:
external:
name: proxy
Apache의 설정 파일이나 php.ini도 git 관리하고 거기에서 Docker에 전달하도록 해 버립니다.
데이터베이스 덤프 데이터도 DB 컨테이너의 /docker-entrypoint-initdb.d
아래에 놓아 컨테이너 빌드 시 자동으로 가져옵니다.
프록시 Docker 구축
Nginx에서 프록시 서버를 빌드합니다.
proxy/docker-compose.ymlversion: "2"
services:
proxy:
image: jwilder/nginx-proxy
container_name: proxy
ports:
- "80:80"
- "443:443"
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
- ./certs:/etc/nginx/certs:ro
- ./conf.d:/etc/nginx/conf.d
restart: always
logging:
options:
max-size: 5m
max-file: "10"
networks:
default:
external:
name: proxy
여기까지 할 수 있으면, 나머지는 hosts에 192.168.33.10 hoge.dev
를 기재해 Vagrant up
하면, ㅡㅇㅇㅇㅇ 에서 v 로 개발 환경을 볼 수 있게 됩니다.
요약
CoreOS는 컨테이너 이용에 특화된 OS이므로 Docker와 매우 궁합이 좋습니다.
그리고, 이번은 Docker측에서 본 호스트 머신은 CoreOS이므로, 자주 흔한 Windows에서 움직이지 않는 문제가 일어나지 않고, 모두 해피가 될 수 있네요.
Reference
이 문제에 관하여(Vagrant+CoreOS+Docker로 호스트 OS와 독립적인 로컬 개발 환경 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/keisuke_kimura/items/2bcd2573e729b14555c7
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
# -*- mode: ruby -*-
# # vi: set ft=ruby :
Vagrant.configure("2") do |config|
config.ssh.insert_key = false
config.vm.box = "coreos-alpha"
config.vm.box_url = "https://storage.googleapis.com/alpha.release.core-os.net/amd64-usr/current/coreos_production_vagrant.json"
config.vm.provider :virtualbox do |v|
v.check_guest_additions = false
v.functional_vboxsf = false
v.memory = 2048
v.cpus = 2
end
if Vagrant.has_plugin?("vagrant-vbguest") then
config.vbguest.auto_update = false
end
config.vm.network :private_network, :ip => "192.168.33.10"
# docker-composeのインストール
config.vm.provision :shell, inline: <<-SHELL
mkdir -p /opt/bin
curl -L https://github.com/docker/compose/releases/download/1.12.0/docker-compose-`uname -s`-`uname -m` > /opt/bin/docker-compose
chmod +x /opt/bin/docker-compose
SHELL
# coreosの自動アップデートを無効にする
config.vm.provision :shell, inline: <<-SHELL
sudo systemctl stop update-engine
SHELL
# 共有フォルダの作成
config.vm.synced_folder "./share", "/home/core/share", :nfs => true, :mount_options => ["nolock,vers=3,udp"]
config.vm.provision :shell, privileged: false, inline: <<-SHELL
cd ~/share/proxy && docker-compose build
cd ~/share/app && docker-compose build
SHELL
# docker起動
config.vm.provision "shell", run: 'always',privileged: false, inline: <<-SHELL
cd ~ && docker network create --driver bridge proxy
cd ~/share/proxy && docker-compose up -d 1>&2
cd ~/share/app && docker-compose up -d 1>&2
SHELL
config.ssh.forward_agent = true
# プロジェクトのClone
config.vm.provision "shell", privileged: false, inline: <<-SHELL
echo -e "Host gitlab.com" > ~/.ssh/config
echo -e " StrictHostKeyChecking no" >> ~/.ssh/config
sudo mkdir -p ~/share/app/var/public_html
cd ~/share/app/var/public_html && git clone [email protected]:hogehoge
SHELL
end
웹 서버와 DB 서버, memcached 컨테이너를 만듭니다. 이번에는 phpMyAdmin도 넣어 보았습니다.
app/docker-compose.yml
version: '2'
services:
mysqldata:
image: busybox
container_name: my_db_data
volumes:
- /var/lib/mysql
# mysql
mydb:
image: mysql:5.6
container_name: my_db
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: root
volumes:
- ./files/mysql_conf:/etc/mysql/conf.d
- ./var/public_html/sql:/docker-entrypoint-initdb.d
volumes_from:
- mysqldata
# web
myweb:
build: ./web
image: web:24
container_name: my_web
environment:
VIRTUAL_HOST: hoge.dev
VIRTUAL_PORT: 80
links:
- mydb:mydb
- memcached
volumes:
- ./var/public_html:/var/www/public_html
- ./var/logs:/var/log/httpd
- ./files/apache_conf/vhosts.conf:/etc/httpd/conf.d/vhosts.conf
- ./files/php_conf/php.ini:/etc/php.ini
# memcacheの構築
memcached:
image: memcached
# phpMyAdminの構築
phpmyadmin:
image: phpmyadmin/phpmyadmin
environment:
- PMA_ARBITRARY=1
- PMA_HOST=mydb
- PMA_USER=root
- PMA_PASSWORD=root
links:
- mydb
ports:
- 8080:80
networks:
default:
external:
name: proxy
Apache의 설정 파일이나 php.ini도 git 관리하고 거기에서 Docker에 전달하도록 해 버립니다.
데이터베이스 덤프 데이터도 DB 컨테이너의
/docker-entrypoint-initdb.d
아래에 놓아 컨테이너 빌드 시 자동으로 가져옵니다.프록시 Docker 구축
Nginx에서 프록시 서버를 빌드합니다.
proxy/docker-compose.ymlversion: "2"
services:
proxy:
image: jwilder/nginx-proxy
container_name: proxy
ports:
- "80:80"
- "443:443"
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
- ./certs:/etc/nginx/certs:ro
- ./conf.d:/etc/nginx/conf.d
restart: always
logging:
options:
max-size: 5m
max-file: "10"
networks:
default:
external:
name: proxy
여기까지 할 수 있으면, 나머지는 hosts에 192.168.33.10 hoge.dev
를 기재해 Vagrant up
하면, ㅡㅇㅇㅇㅇ 에서 v 로 개발 환경을 볼 수 있게 됩니다.
요약
CoreOS는 컨테이너 이용에 특화된 OS이므로 Docker와 매우 궁합이 좋습니다.
그리고, 이번은 Docker측에서 본 호스트 머신은 CoreOS이므로, 자주 흔한 Windows에서 움직이지 않는 문제가 일어나지 않고, 모두 해피가 될 수 있네요.
Reference
이 문제에 관하여(Vagrant+CoreOS+Docker로 호스트 OS와 독립적인 로컬 개발 환경 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/keisuke_kimura/items/2bcd2573e729b14555c7
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
version: "2"
services:
proxy:
image: jwilder/nginx-proxy
container_name: proxy
ports:
- "80:80"
- "443:443"
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
- ./certs:/etc/nginx/certs:ro
- ./conf.d:/etc/nginx/conf.d
restart: always
logging:
options:
max-size: 5m
max-file: "10"
networks:
default:
external:
name: proxy
CoreOS는 컨테이너 이용에 특화된 OS이므로 Docker와 매우 궁합이 좋습니다.
그리고, 이번은 Docker측에서 본 호스트 머신은 CoreOS이므로, 자주 흔한 Windows에서 움직이지 않는 문제가 일어나지 않고, 모두 해피가 될 수 있네요.
Reference
이 문제에 관하여(Vagrant+CoreOS+Docker로 호스트 OS와 독립적인 로컬 개발 환경 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/keisuke_kimura/items/2bcd2573e729b14555c7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)