{"id":3084,"date":"2022-04-17T08:28:07","date_gmt":"2022-04-17T16:28:07","guid":{"rendered":"https:\/\/tungle.ca\/?p=3084"},"modified":"2022-12-04T18:59:33","modified_gmt":"2022-12-05T02:59:33","slug":"using-docker-compose-to-deploy-wordpress-on-aws","status":"publish","type":"post","link":"https:\/\/tungle.ca\/?p=3084","title":{"rendered":"Using Docker compose to deploy WordPress on AWS"},"content":{"rendered":"\n<p>This is a diagram that I have used for this lab.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-597.png\" alt=\"\" class=\"wp-image-3163\" width=\"426\" height=\"428\" srcset=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-597.png 550w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-597-300x300.png 300w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-597-150x150.png 150w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-597-200x200.png 200w\" sizes=\"auto, (max-width: 426px) 100vw, 426px\" \/><\/figure>\n\n\n\n<p>I have explained how to use Docker compose to deploy WordPress on-prem (https:\/\/tungle.ca\/?p=2381). In this article, I will install docker on the Debian Linux instance on AWS, then deploy WordPress via this docker.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"451\" src=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-538-1024x451.png\" alt=\"\" class=\"wp-image-3085\" srcset=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-538-1024x451.png 1024w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-538-300x132.png 300w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-538-768x338.png 768w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-538-200x88.png 200w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-538.png 1106w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"751\" height=\"589\" src=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-539.png\" alt=\"\" class=\"wp-image-3086\" srcset=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-539.png 751w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-539-300x235.png 300w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-539-200x157.png 200w\" sizes=\"auto, (max-width: 751px) 100vw, 751px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"467\" src=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-540-1024x467.png\" alt=\"\" class=\"wp-image-3087\" srcset=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-540-1024x467.png 1024w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-540-300x137.png 300w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-540-768x351.png 768w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-540-200x91.png 200w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-540.png 1104w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"648\" src=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-541-1024x648.png\" alt=\"\" class=\"wp-image-3088\" srcset=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-541-1024x648.png 1024w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-541-300x190.png 300w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-541-768x486.png 768w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-541-200x127.png 200w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-541.png 1196w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>SSH to the machine.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"716\" height=\"399\" src=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-542.png\" alt=\"\" class=\"wp-image-3089\" srcset=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-542.png 716w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-542-300x167.png 300w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-542-200x111.png 200w\" sizes=\"auto, (max-width: 716px) 100vw, 716px\" \/><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">sudo apt-get update<\/code><\/pre>\n\n\n\n<p>+ Install Docker CE on Debian 10.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common<\/code><\/pre>\n\n\n\n<p>+ Add Docker GPG key and Docker repository.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">curl -fsSL https:\/\/download.docker.com\/linux\/debian\/gpg | apt-key add -\nadd-apt-repository \"deb [arch=amd64] https:\/\/download.docker.com\/linux\/debian $(lsb_release -cs) stable\"<\/code><\/pre>\n\n\n\n<p>+ Install Docker Engine.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">apt-get update\napt-get install docker-ce docker-ce-cli<\/code><\/pre>\n\n\n\n<p>+ Enable and start Docker daemon.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">systemctl start docker\nsystemctl enable docker\nsystemctl status docker<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"872\" height=\"314\" src=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-543.png\" alt=\"\" class=\"wp-image-3090\" srcset=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-543.png 872w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-543-300x108.png 300w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-543-768x277.png 768w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-543-200x72.png 200w\" sizes=\"auto, (max-width: 872px) 100vw, 872px\" \/><\/figure>\n\n\n\n<p>+ Next, use Docker compose to deploy WordPress. Download the Latest Docker Version.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">sudo su\ncurl -L \"https:\/\/github.com\/docker\/compose\/releases\/download\/1.29.2\/docker-compose-$(uname -s)-$(uname -m)\" -o \/usr\/local\/bin\/docker-compose<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"860\" height=\"114\" src=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-544.png\" alt=\"\" class=\"wp-image-3091\" srcset=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-544.png 860w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-544-300x40.png 300w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-544-768x102.png 768w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-544-200x27.png 200w\" sizes=\"auto, (max-width: 860px) 100vw, 860px\" \/><\/figure>\n\n\n\n<p>+ Change file permission &amp; check the docker version.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">chmod +x \/usr\/local\/bin\/docker-compose\ndocker\u2013compose -v<\/code><\/pre>\n\n\n\n<p>+ Create a sample docker-compose.yml file.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">mkdir mywordpress\ncd mywordpress\/\nnano docker-compose.yml<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"docker\" class=\"language-docker\">version: \"3.9\"\n    \nservices:\n  db:\n    image: mysql:5.7\n    volumes:\n      - db_data:\/var\/lib\/mysql\n    restart: always\n    environment:\n      MYSQL_ROOT_PASSWORD: tungwordpress\n      MYSQL_DATABASE: wordpress\n      MYSQL_USER: wordpress\n      MYSQL_PASSWORD: wordpress\n    \n  wordpress:\n    depends_on:\n      - db\n    image: wordpress:latest\n    volumes:\n      - wordpress_data:\/var\/www\/html\n    ports:\n      - \"80:80\"\n    restart: always\n    environment:\n      WORDPRESS_DB_HOST: db\n      WORDPRESS_DB_USER: wordpress\n      WORDPRESS_DB_PASSWORD: wordpress\n      WORDPRESS_DB_NAME: wordpress\nvolumes:\n  db_data: {}\n  wordpress_data: {}<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"645\" height=\"485\" src=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-545.png\" alt=\"\" class=\"wp-image-3092\" srcset=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-545.png 645w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-545-300x226.png 300w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-545-200x150.png 200w\" sizes=\"auto, (max-width: 645px) 100vw, 645px\" \/><\/figure>\n\n\n\n<p>+ Deploy WordPress by using Docker compose.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"docker\" class=\"language-docker\">docker-compose up -d<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"692\" height=\"247\" src=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-546.png\" alt=\"\" class=\"wp-image-3093\" srcset=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-546.png 692w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-546-300x107.png 300w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-546-200x71.png 200w\" sizes=\"auto, (max-width: 692px) 100vw, 692px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"635\" height=\"117\" src=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-547.png\" alt=\"\" class=\"wp-image-3094\" srcset=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-547.png 635w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-547-300x55.png 300w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-547-200x37.png 200w\" sizes=\"auto, (max-width: 635px) 100vw, 635px\" \/><\/figure>\n\n\n\n<p>+ Check that TCP port 80 is running on the docker node.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">netstat -antp | grep 80<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"829\" height=\"83\" src=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-548.png\" alt=\"\" class=\"wp-image-3095\" srcset=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-548.png 829w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-548-300x30.png 300w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-548-768x77.png 768w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-548-200x20.png 200w\" sizes=\"auto, (max-width: 829px) 100vw, 829px\" \/><\/figure>\n\n\n\n<p>+ Access to WordPress.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"900\" height=\"724\" src=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-549.png\" alt=\"\" class=\"wp-image-3096\" srcset=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-549.png 900w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-549-300x241.png 300w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-549-768x618.png 768w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-549-200x161.png 200w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"724\" src=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-550-1024x724.png\" alt=\"\" class=\"wp-image-3097\" srcset=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-550-1024x724.png 1024w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-550-300x212.png 300w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-550-768x543.png 768w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-550-200x141.png 200w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-550.png 1032w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>+ Check the docker container is running.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"docker\" class=\"language-docker\">docker-compose ps\ndocker-compose images<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"883\" height=\"152\" src=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-551.png\" alt=\"\" class=\"wp-image-3098\" srcset=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-551.png 883w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-551-300x52.png 300w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-551-768x132.png 768w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-551-200x34.png 200w\" sizes=\"auto, (max-width: 883px) 100vw, 883px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"521\" height=\"102\" src=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-553.png\" alt=\"\" class=\"wp-image-3100\" srcset=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-553.png 521w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-553-300x59.png 300w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/04\/image-553-200x39.png 200w\" sizes=\"auto, (max-width: 521px) 100vw, 521px\" \/><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>This is a diagram that I have used for this lab. I have explained how to use Docker compose to deploy WordPress on-prem (https:\/\/tungle.ca\/?p=2381). In this article, I will install docker on the Debian Linux instance on AWS, then deploy WordPress via this docker. SSH to the machine. + Install Docker CE on Debian 10. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[19,28],"tags":[20,26],"class_list":["post-3084","post","type-post","status-publish","format-standard","hentry","category-cloud","category-docker","tag-cloud","tag-docker"],"_links":{"self":[{"href":"https:\/\/tungle.ca\/index.php?rest_route=\/wp\/v2\/posts\/3084","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tungle.ca\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tungle.ca\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tungle.ca\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/tungle.ca\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3084"}],"version-history":[{"count":6,"href":"https:\/\/tungle.ca\/index.php?rest_route=\/wp\/v2\/posts\/3084\/revisions"}],"predecessor-version":[{"id":4427,"href":"https:\/\/tungle.ca\/index.php?rest_route=\/wp\/v2\/posts\/3084\/revisions\/4427"}],"wp:attachment":[{"href":"https:\/\/tungle.ca\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3084"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tungle.ca\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3084"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tungle.ca\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3084"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}