<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: ฉันจะเริ่มปฏิวัติจากเตียงของฉัน 😂</title>
    <description>The latest articles on DEV Community by ฉันจะเริ่มปฏิวัติจากเตียงของฉัน 😂 (@jaedsada2).</description>
    <link>https://dev.to/jaedsada2</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F305598%2Fdf1b19ae-9d5e-495f-be4d-856dac05512b.jpg</url>
      <title>DEV Community: ฉันจะเริ่มปฏิวัติจากเตียงของฉัน 😂</title>
      <link>https://dev.to/jaedsada2</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jaedsada2"/>
    <language>en</language>
    <item>
      <title>NGINX Set Let's Encrypt</title>
      <dc:creator>ฉันจะเริ่มปฏิวัติจากเตียงของฉัน 😂</dc:creator>
      <pubDate>Wed, 01 Apr 2020 03:54:31 +0000</pubDate>
      <link>https://dev.to/jaedsada2/nginx-set-let-s-encrypt-3il2</link>
      <guid>https://dev.to/jaedsada2/nginx-set-let-s-encrypt-3il2</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;set Https บน nginx ด้วย Let's Encrypt&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  How to start
&lt;/h3&gt;

&lt;h4&gt;
  
  
  -  Step 1 install certbot
&lt;/h4&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;add-apt-repository ppa:certbot/certbot
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h4&gt;
  
  
  -  Step 2 install Certbot’s Nginx package
&lt;/h4&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;python-certbot-nginx
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h4&gt;
  
  
  -  Step 3 edit config on Site Available
&lt;/h4&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ sudo nano /etc/nginx/sites-available/default
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;/etc/nginx/sites-available/default&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;...
server_name example.com www.example.com;
...
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h4&gt;
  
  
  -  Step 4 restart nginx
&lt;/h4&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl restart nginx
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h4&gt;
  
  
  -  Step 5 certbot
&lt;/h4&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;certbot &lt;span class="nt"&gt;--nginx&lt;/span&gt; &lt;span class="nt"&gt;-d&lt;/span&gt; &amp;lt;example.com&amp;gt; &lt;span class="nt"&gt;-d&lt;/span&gt; www.&amp;lt;example.com&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;output and select 2&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Output
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
-------------------------------------------------------------------------------
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h4&gt;
  
  
  -  open https with &lt;code&gt;https://example.com&lt;/code&gt;
&lt;/h4&gt;

</description>
      <category>nginx</category>
      <category>letsencrypt</category>
      <category>ssl</category>
    </item>
    <item>
      <title>Vagrant install Kubernetes on VirtualBox</title>
      <dc:creator>ฉันจะเริ่มปฏิวัติจากเตียงของฉัน 😂</dc:creator>
      <pubDate>Tue, 31 Mar 2020 17:35:22 +0000</pubDate>
      <link>https://dev.to/jaedsada2/vagrant-install-kubernetes-on-virtualbox-36b0</link>
      <guid>https://dev.to/jaedsada2/vagrant-install-kubernetes-on-virtualbox-36b0</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;จำลอง สร้าง k8s cluster ด้วย vagrant + virtualbox&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Require
&lt;/h3&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;- Vagrant
- VirtualBox
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h3&gt;
  
  
  Environments
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;master&lt;/li&gt;
&lt;li&gt;node 1&lt;/li&gt;
&lt;li&gt;node 2&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Vagrantfile
&lt;/h3&gt;

&lt;h4&gt;
  
  
  - ส่วน Environments
&lt;/h4&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;IMAGE_NAME &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"bento/ubuntu-18.04"&lt;/span&gt;
COUNTER &lt;span class="o"&gt;=&lt;/span&gt; 2
Vagrant.configure&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"2"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; |config|
  config.vm.box &lt;span class="o"&gt;=&lt;/span&gt; IMAGE_NAME
  config.vm.provider &lt;span class="s2"&gt;"virtualbox"&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; |v|
    v.memory &lt;span class="o"&gt;=&lt;/span&gt; 1024
    v.cpus &lt;span class="o"&gt;=&lt;/span&gt; 2
  end

  ...
  ...
end
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;กำหนด Environments ที่จะต้องใช้ ในแต่ละ vm&lt;/li&gt;
&lt;li&gt;** ขั้นต่ำในการลง k8s คือ CPUs 2 core&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;h4&gt;
  
  
  - ส่วน Init
&lt;/h4&gt;

&lt;blockquote&gt;
&lt;p&gt;ส่วนที่ต้องลงทุก vm&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;  ....
  ....

  config.vm.provision &lt;span class="s2"&gt;"shell"&lt;/span&gt;, privileged: &lt;span class="nb"&gt;false&lt;/span&gt;, inline: &lt;span class="o"&gt;&amp;lt;&amp;lt;-&lt;/span&gt;&lt;span class="no"&gt;SCRIPT&lt;/span&gt;&lt;span class="sh"&gt;
      sudo swapoff -a
      sudo sed -i '/swap/d' /etc/fstab
      sudo apt-get update
      sudo apt-get install -y docker.io apt-transport-https curl
      sudo systemctl start docker
      sudo systemctl enable docker
      sudo apt-get update
      sudo apt-get install -y apt-transport-https
      curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
      sudo touch /etc/apt/sources.list.d/kubernetes.list
      echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list
      sudo apt-get update
      sudo apt-get install -y kubeadm 
&lt;/span&gt;&lt;span class="no"&gt;
  SCRIPT
&lt;/span&gt;  ...
  ...
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h4&gt;
  
  
  - ส่วน Master
&lt;/h4&gt;

&lt;blockquote&gt;
&lt;p&gt;ส่วนการจัดการ ของ vm สำหรับ master node&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;  config.vm.define &lt;span class="s2"&gt;"k8s-master"&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; |master|
    master.vm.box &lt;span class="o"&gt;=&lt;/span&gt; IMAGE_NAME
    master.vm.network &lt;span class="s2"&gt;"private_network"&lt;/span&gt;, ip: &lt;span class="s2"&gt;"10.0.0.10"&lt;/span&gt;
    master.vm.hostname &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"k8s-master"&lt;/span&gt;
    master.vm.provision &lt;span class="s2"&gt;"shell"&lt;/span&gt;, inline: &lt;span class="o"&gt;&amp;lt;&amp;lt;-&lt;/span&gt;&lt;span class="no"&gt;SHELL&lt;/span&gt;&lt;span class="sh"&gt;
      rm -rf /vagrant/join.sh
      sudo kubeadm init --apiserver-advertise-address=10.0.0.10 --pod-network-cidr=10.244.0.0/16  
      sudo kubeadm token create --print-join-command &amp;gt; /vagrant/join.sh
      chmod +x /vagrant/join.sh
      mkdir -p &lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;&lt;span class="sh"&gt;/.kube  
      sudo cp -i /etc/kubernetes/admin.conf &lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;&lt;span class="sh"&gt;/.kube/config
      sudo chown &lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;id&lt;/span&gt; &lt;span class="nt"&gt;-u&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="sh"&gt;:&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;id&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="sh"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;&lt;span class="sh"&gt;/.kube/config  
      kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml  
&lt;/span&gt;&lt;span class="no"&gt;      SHELL
&lt;/span&gt;  end
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;sudo kubeadm token create --print-join-command&lt;/code&gt; จะได้ในส่วนของ &lt;code&gt;script สำหรับ ให้ worker แต่ละตัวไปใช้ เพื่อ join หา master node&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;kubeadm &lt;span class="nb"&gt;join&lt;/span&gt; &amp;lt;ip master&amp;gt;:6443 &lt;span class="nt"&gt;--token&lt;/span&gt; xxxx &lt;span class="nt"&gt;--discovery-token-ca-cert-hash&lt;/span&gt; sha256:xxxx
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;แล้วเอาส่วนเราทำการ ให้มัน echo ลง ไฟล์ &lt;code&gt;/vagrant/join.sh&lt;/code&gt; &lt;/p&gt;
&lt;/blockquote&gt;

&lt;h4&gt;
  
  
  - ส่วน Worker node 1 - 2
&lt;/h4&gt;

&lt;blockquote&gt;
&lt;p&gt;ส่วนของ vm ของ แต่ละ worker node&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;  ...
  ...
  ...
  &lt;span class="o"&gt;(&lt;/span&gt;1..COUNTER&lt;span class="o"&gt;)&lt;/span&gt;.each &lt;span class="k"&gt;do&lt;/span&gt; |i|
    config.vm.define &lt;span class="s2"&gt;"node-#{i}"&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; |node|
        node.vm.box &lt;span class="o"&gt;=&lt;/span&gt; IMAGE_NAME
        node.vm.network &lt;span class="s2"&gt;"private_network"&lt;/span&gt;, ip: &lt;span class="s2"&gt;"10.0.0.#{i + 11}"&lt;/span&gt;
        node.vm.hostname &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"node-#{i}"&lt;/span&gt;
        node.vm.provision &lt;span class="s2"&gt;"shell"&lt;/span&gt;, privileged: &lt;span class="nb"&gt;false&lt;/span&gt;, inline: &lt;span class="o"&gt;&amp;lt;&amp;lt;-&lt;/span&gt;&lt;span class="no"&gt;SHELL&lt;/span&gt;&lt;span class="sh"&gt;
          sudo /vagrant/join.sh
          echo 'Environment="KUBELET_EXTRA_ARGS=--node-ip=10.0.0.#{i + 11}"' | sudo tee -a /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
          sudo systemctl daemon-reload
          sudo systemctl restart kubelet
&lt;/span&gt;&lt;span class="no"&gt;        SHELL
&lt;/span&gt;    end
  end
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;sudo sh /vagrant/join.sh&lt;/code&gt; ทำการ run คำสั่ง &lt;code&gt;join master&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h4&gt;
  
  
  - Vagrantfile ทั้งหมด
&lt;/h4&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;IMAGE_NAME &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"bento/ubuntu-18.04"&lt;/span&gt;
COUNTER &lt;span class="o"&gt;=&lt;/span&gt; 2
Vagrant.configure&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"2"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; |config|
  config.vm.box &lt;span class="o"&gt;=&lt;/span&gt; IMAGE_NAME
  config.vm.provider &lt;span class="s2"&gt;"virtualbox"&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; |v|
    v.memory &lt;span class="o"&gt;=&lt;/span&gt; 1024
    v.cpus &lt;span class="o"&gt;=&lt;/span&gt; 2
  end

  config.vm.provision &lt;span class="s2"&gt;"shell"&lt;/span&gt;, privileged: &lt;span class="nb"&gt;true&lt;/span&gt;, inline: &lt;span class="o"&gt;&amp;lt;&amp;lt;-&lt;/span&gt;&lt;span class="no"&gt;SCRIPT&lt;/span&gt;&lt;span class="sh"&gt;
      sudo swapoff -a
      sudo sed -i '/swap/d' /etc/fstab
      sudo apt-get update
      sudo apt-get install -y docker.io apt-transport-https curl
      sudo systemctl start docker
      sudo systemctl enable docker
      sudo apt-get update
      sudo apt-get install -y apt-transport-https
      curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
      sudo touch /etc/apt/sources.list.d/kubernetes.list
      echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list
      sudo apt-get update
      sudo apt-get install -y kubeadm 
&lt;/span&gt;&lt;span class="no"&gt;
  SCRIPT

&lt;/span&gt;  config.vm.define &lt;span class="s2"&gt;"k8s-master"&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; |master|
    master.vm.box &lt;span class="o"&gt;=&lt;/span&gt; IMAGE_NAME
    master.vm.network &lt;span class="s2"&gt;"private_network"&lt;/span&gt;, ip: &lt;span class="s2"&gt;"10.0.0.10"&lt;/span&gt;
    master.vm.hostname &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"k8s-master"&lt;/span&gt;
    master.vm.provision &lt;span class="s2"&gt;"shell"&lt;/span&gt;, inline: &lt;span class="o"&gt;&amp;lt;&amp;lt;-&lt;/span&gt;&lt;span class="no"&gt;SHELL&lt;/span&gt;&lt;span class="sh"&gt;
      OUTPUT_FILE=/vagrant/join.sh
      rm -rf /vagrant/join.sh
      sudo kubeadm init --apiserver-advertise-address=10.0.0.10 --pod-network-cidr=10.244.0.0/16  
      sudo kubeadm token create --print-join-command &amp;gt; /vagrant/join.sh
      chmod +x &lt;/span&gt;&lt;span class="nv"&gt;$OUTPUT_FILE&lt;/span&gt;&lt;span class="sh"&gt;
      mkdir -p &lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;&lt;span class="sh"&gt;/.kube  
      sudo cp -i /etc/kubernetes/admin.conf &lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;&lt;span class="sh"&gt;/.kube/config
      sudo chown &lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;id&lt;/span&gt; &lt;span class="nt"&gt;-u&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="sh"&gt;:&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;id&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="sh"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;&lt;span class="sh"&gt;/.kube/config  
      kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml  
&lt;/span&gt;&lt;span class="no"&gt;      SHELL
&lt;/span&gt;  end

  &lt;span class="o"&gt;(&lt;/span&gt;1..COUNTER&lt;span class="o"&gt;)&lt;/span&gt;.each &lt;span class="k"&gt;do&lt;/span&gt; |i|
    config.vm.define &lt;span class="s2"&gt;"node-#{i}"&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; |node|
        node.vm.box &lt;span class="o"&gt;=&lt;/span&gt; IMAGE_NAME
        node.vm.network &lt;span class="s2"&gt;"private_network"&lt;/span&gt;, ip: &lt;span class="s2"&gt;"10.0.0.#{i + 11}"&lt;/span&gt;
        node.vm.hostname &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"node-#{i}"&lt;/span&gt;
        node.vm.provision :shell, privileged: &lt;span class="nb"&gt;true&lt;/span&gt;, inline: &lt;span class="o"&gt;&amp;lt;&amp;lt;-&lt;/span&gt;&lt;span class="no"&gt;SHELL&lt;/span&gt;&lt;span class="sh"&gt;
        sudo /vagrant/join.sh
        echo 'Environment="KUBELET_EXTRA_ARGS=--node-ip=10.0.0.#{i + 11}"' | sudo tee -a /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
        sudo systemctl daemon-reload
        sudo systemctl restart kubelet
&lt;/span&gt;&lt;span class="no"&gt;        SHELL
&lt;/span&gt;    end
  end
end
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h4&gt;
  
  
  Run Vagrantfile
&lt;/h4&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;vagrant up
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;






&lt;h4&gt;
  
  
  Check Node All
&lt;/h4&gt;

&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;master
&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;vagrant ssh k8s-master
...
vagrant@k8s-master:~&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;sudo&lt;/span&gt; &lt;span class="nt"&gt;-i&lt;/span&gt; 
root@k8s-master:~&lt;span class="nv"&gt;$ &lt;/span&gt;kubectl get nodes
NAME         STATUS   ROLES    AGE    VERSION
k8s-master   Ready    master   15m    v1.18.0
node-1       Ready    &amp;lt;none&amp;gt;   12m    v1.18.0
node-2       Ready    &amp;lt;none&amp;gt;   9m6s   v1.18.0

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;






</description>
      <category>vagrant</category>
      <category>devops</category>
      <category>kubernetes</category>
      <category>k8s</category>
    </item>
    <item>
      <title>Docker Redmine</title>
      <dc:creator>ฉันจะเริ่มปฏิวัติจากเตียงของฉัน 😂</dc:creator>
      <pubDate>Mon, 06 Jan 2020 04:48:39 +0000</pubDate>
      <link>https://dev.to/jaedsada2/docker-redmine-57en</link>
      <guid>https://dev.to/jaedsada2/docker-redmine-57en</guid>
      <description>&lt;h1&gt;
  
  
  Redmine
&lt;/h1&gt;

&lt;h3&gt;
  
  
  require
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;database : mysql , postgres , ...&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Step Docker Run
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Step 1 Install postgres
&lt;/h4&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;docker run &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="nt"&gt;--name&lt;/span&gt; postgres &lt;span class="nt"&gt;--network&lt;/span&gt; some-network &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="nv"&gt;POSTGRES_PASSWORD&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;secret &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="nv"&gt;POSTGRES_USER&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;redmine postgres
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h4&gt;
  
  
  OR Step 1 Install Mysql
&lt;/h4&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;docker run &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="nt"&gt;--name&lt;/span&gt; mysql &lt;span class="nt"&gt;--network&lt;/span&gt; some-network &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="nv"&gt;MYSQL_USER&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;redmine &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="nv"&gt;MYSQL_PASSWORD&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;secret &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="nv"&gt;MYSQL_DATABASE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;redmine &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="nv"&gt;MYSQL_RANDOM_ROOT_PASSWORD&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1 mysql:5.7
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h4&gt;
  
  
  Step 2 Install Redmine
&lt;/h4&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;docker run &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="nt"&gt;--name&lt;/span&gt; redmine /
&lt;span class="nt"&gt;--network&lt;/span&gt; redmine-network /
&lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="nv"&gt;REDMINE_DB_POSTGRES&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;postgres /
&lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="nv"&gt;REDMINE_DB_USERNAME&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;redmine /
&lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="nv"&gt;REDMINE_DB_PASSWORD&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;secret /
redmine
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h3&gt;
  
  
  Step Docker-compose
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Mysql
&lt;/h4&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;version&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;3.1'&lt;/span&gt;

&lt;span class="na"&gt;services&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

  &lt;span class="na"&gt;redmine&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;redmine&lt;/span&gt;
    &lt;span class="na"&gt;restart&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;always&lt;/span&gt;
    &lt;span class="na"&gt;ports&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;8080:3000&lt;/span&gt;
    &lt;span class="na"&gt;environment&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;REDMINE_DB_MYSQL&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;db&lt;/span&gt;
      &lt;span class="na"&gt;REDMINE_DB_PASSWORD&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;example&lt;/span&gt;

  &lt;span class="na"&gt;db&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;mysql:5.7&lt;/span&gt;
    &lt;span class="na"&gt;restart&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;always&lt;/span&gt;
    &lt;span class="na"&gt;environment&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;MYSQL_ROOT_PASSWORD&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;example&lt;/span&gt;
      &lt;span class="na"&gt;MYSQL_DATABASE&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;redmine&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h4&gt;
  
  
  Postgres
&lt;/h4&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;version&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;3.1'&lt;/span&gt;

&lt;span class="na"&gt;services&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

  &lt;span class="na"&gt;redmine&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;redmine&lt;/span&gt;
    &lt;span class="na"&gt;restart&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;always&lt;/span&gt;
    &lt;span class="na"&gt;ports&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;8080:3000&lt;/span&gt;
    &lt;span class="na"&gt;environment&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;REDMINE_DB_POSTGRES&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;postgres&lt;/span&gt;
      &lt;span class="na"&gt;REDMINE_DB_USERNAME&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;redmine&lt;/span&gt;
      &lt;span class="na"&gt;REDMINE_DB_PASSWORD&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;secret&lt;/span&gt;

  &lt;span class="na"&gt;db&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;postgres&lt;/span&gt;
    &lt;span class="na"&gt;restart&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;always&lt;/span&gt;
    &lt;span class="na"&gt;environment&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;POSTGRES_USER&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;example&lt;/span&gt;
      &lt;span class="na"&gt;POSTGRES_PASSWORD&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;redmine&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h4&gt;
  
  
  Volume
&lt;/h4&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;docker run &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="nt"&gt;--name&lt;/span&gt; redmine /
&lt;span class="nt"&gt;-v&lt;/span&gt; /my/own/datadir:/usr/src/redmine/files /
&lt;span class="nt"&gt;--link&lt;/span&gt; postgres:postgres /
redmine
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



</description>
      <category>redmine</category>
      <category>docker</category>
    </item>
  </channel>
</rss>
