Docker 101 for frontenders
Google Developer Expert:
- Web Technologies
- Google Cloud Platform
Auth0 Ambassador
Chief DevOps Architect @ Voicethread
Worldwide Community Organiser @ Vuevixens
🦊 https://vuevixens.org
🐦 @cotufa82
<likes> Food, Infrastructure, Food, Vue.js, Food, Travelling, IOT, Steven Universe </likes>
The adoption of DevOps culture, tools and agile engineering practices has, among other things, the nice effect of increasing the collaboration between the roles of development and operations. One of the main problem of the past (but also today in some realities) is that the dev team tended to be uninterested in the operation and maintenance of a system once it was handed over to the ops team, while the latter tended to be not really aware of the system’s business goals and, therefore, reluctant in satisfying the operational needs of the system (also referred to as “whims of developers”).
🐳 @cotufa82
🐳 @cotufa82
🐳 @cotufa82
Docker is a tool designed to make it easier to create, deploy, and run applications by using containers. Containers allow a developer to package up an application with all of the parts it needs, such as libraries and other dependencies, and ship it all out as one package. By doing so, thanks to the container, the developer can rest assured that the application will run on any other Linux machine regardless of any customized settings that machine might have that could differ from the machine used for writing and testing the code.
🐳 @cotufa82
🐳 @cotufa82
Docker && Docker-Compose
🐳 @cotufa82
🐳 @cotufa82
FROM node:10.7
ENV APP_ROOT /src #YOUR APP DIR
RUN mkdir ${APP_ROOT}
WORKDIR ${APP_ROOT}
ADD . ${APP_ROOT}
RUN npm install #COMMANDS TO RUN
RUN npm run build --prod
ENV HOST 0.0.0.0 #EXPOSE TO PUBLIC
🐳 @cotufa82
version: "3"
services:
nuxt:
build: ./app/
container_name: vuevixens-website
restart: always
ports:
- "3000:3000"
command:
"npm run start"
nginx:
image: nginx:1.13
container_name: vuevixens-nginx
ports:
- "80:80"
volumes:
- ./nginx:/etc/nginx/conf.d
depends_on:
- nuxt
🐳 @cotufa82
# Let's go to our NGINX folder and create a default.conf
#(In location we connect directly with our app container,
# so whatever you call your app container has to have the
# same name in this file.)
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://vuevixens-website:3000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
🐳 @cotufa82
🐳 @cotufa82
*-d === Detached mode: Run containers in the background
🐳 @cotufa82
🐳 @cotufa82
🐳 @cotufa82