-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathVagrantfile
62 lines (49 loc) · 1.82 KB
/
Vagrantfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# -*- mode: ruby -*-
# vi: set ft=ruby :
$provision = <<SCRIPT
sudo apk update
sudo apk add --no-cache build-base gcc libgcc libstdc++ llvm10-libs musl musl-dev libcrypto1.1 libcurl libgit2 libssl1.1 zlib libpq
sudo apk add --no-cache redis postgresql postgresql-dev
# Rustをインストール
curl https://sh.rustup.rs -sSf | \
sh -s -- --default-toolchain stable -y
echo "source $HOME/.cargo/env" >> ~/.profile
# 環境変数を読み込む
source $HOME/.cargo/env
# cargo-watchをインストール
cargo install cargo-watch
# データベースを起動
sudo /etc/init.d/postgresql start
sudo /etc/init.d/redis start
cat << EOF | sudo su - postgres -c psql
-- Create the database user
CREATE USER vagrant WITH PASSWORD 'password';
-- Create the database
CREATE DATABASE technopolis WITH OWNER=vagrant ENCODING='UTF8';
EOF
SCRIPT
$start = <<SCRIPT
# データベースを起動
sudo /etc/init.d/postgresql start
sudo /etc/init.d/redis start
echo "Technopolis is ready. Let's roll!"
echo "To server start:"
echo ' $ vagrant ssh -c \"cd /srv/tp && cargo watch -x 'run' --clear\"'
SCRIPT
Vagrant.configure("2") do |config|
config.vm.define "technopolis" do |config|
# 基本的な設定
config.vm.hostname = "technopolis"
config.vm.box = "generic/alpine312"
config.vm.provider "virtualbox" do |v|
v.name = "tp_technopolis"
v.memory = "2048"
end
# ファイル共有の設定
config.vm.synced_folder "./", "/srv/tp", type: "rsync", rsync__exclude: [".git/", "target/"]
config.vm.synced_folder ".", "/vagrant", disabled: true
config.vm.network "forwarded_port", guest: 5432, host: 5432
config.vm.provision :shell, inline: $provision, privileged: false
config.vm.provision :shell, inline: $start, run: "always", privileged: false
end
end