Skip to content

Latest commit

History

10 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Lab : Introduction Devops

This lab goal is to introduce DevOps concept (Git, Gitflow, Docker,...) seen in corresponding course. It is adapted to fit ece courses.

Update of repo

After having forked this repo, if you want to get updates from the last version of the repo parent, execute following commands

git remote add parent https://github.com/arthurmauvezin/devops-lab.git
git pull

Instructions

This lab rely on your web technologies project. The goal of this lab is to deploy your project with the help of docker and docker-compose.

This lab assume your web technologies project is finished, or at least that your can call your REST API to get, create, update or delete items in your zoo.

All the answers for questions asked in this lab instructions must be filled in answers.md file situated in your own fork of this repo.

This lab must be completed individually.

1: Git

1.0: Create a Github account

Go to Github and create a personal account if you do not have one already.

1.1: Fork course repo

Go to devops-lab Github project and fork the repo to get your own copy of this repo into your newly created personal space.

To get more help about fork, see the official documentation

1.2: Clone your fork

Clone your newly forked project on your computer

1.3: Faire un commit

After the clone, you should have your copy of the project on your computer. Go into cloned folder and add your firstname and lastname to it.

Commit and push your changes. You should see your change on Github graphical interface.

1.4: Create a pull request

From your Github project fork page, create a pull request to propose your change to parent project (lab repo).

To get more help agout pull requests, see official documentation

1.5: Commit your project

Add your express js project to this git repo and commit to save it for the future.

In order to get your grade, at the end of the lab, commit and push all changes your made to your repo.

2: Docker

2.0: Documentation

2.1: Dockerise your application

At the root directory of your project, create a file called Dockerfile able to build a node image conaining your express code.

Help:

  • Check Dockerfile reference documentation if needed
  • Base your image on node official image Docker Hub
  • Node use librairies to install on host before starting program (cf. npm <commands>). To install these librairies, execute following command in Dockerfile.
npm install <my_dependencies>
  • WORKDIR command might help
  • If you want to optimize, use Alpine images

2.2: Run your app

Start a docker container from the image you just created in the preceding question. Write the command you use in answers.md file.

Check log output message to validate that your server started correctly.

2.3: Access to your service

Try to access to your service (with postman for example). Why is your call fail ?

Restart container beeing careful to open needed port to get access to your service (see docker help). Write the command you use in answers.md file.

2.4: Environment variable

Modify your javascript code to read and user the value of following environement variables to connect to MySQL database:

  • MYSQL_HOST
  • MYSQL_PORT
  • MYSQL_DATABASE
  • MYSQL_USER
  • MYSQL_PASSWORD

Rebuild your image and run it again being careful to pass corresponding variable as arguments (see environement variables in docker run documentation).

Your application should run normally at this point.

2.5: Ship your image

In order to share your new image with the world, you will push your image to official public registry called Docker Hub (or Docker Store).

To do that:

  • Create yourself an account on Docker Hub
  • Create a new repository attached to your account
  • Then, push your image to your newly created repository

Your image cannot be pushed as it is. Why ? Modify the name of your image and push it again on your new repository on Docker Hub. Write the command you use in answers.md file.

2.6: Let's Run it

Now that your image is shared with the world, you can pull it from any computer on which Docker is installed.

Delete all your images created from the start of the lab on your computer. Write the command you use in answers.md file.

Start a container again with the name you pushed on Docker hub earlier. What happened before container start ? Write the command you use in answers.md file.

Your container works as intended but if you close your terminal, it will stop. Start your container again in detached mode and call your service to check accessibility. Write the command you use in answers.md file.

2.7: Naming

Your container is normally started. In detached mode, how can you tell that container is started ? What is the name of your container ? Write the command you use in answers.md file.

Restart your container by renaming it with a name corresponding to its function. Write the command you use in answers.md file.

2.8: Go inside

Your container running, open an interactive session to obseve files inside container.

Help: Executing following command get OS informations:

cat /etc/*release

What is the OS from the container ? Copy command ouput into answers.md

3: Docker Compose

In this part, we will user docker-compose to automate deployment of the app we built in part 1 of this lab.

3.0: Download docker-compose

Go to official site and install docker-compose for your OS.

Be careful: Stop all your running container before starting this part

3.1: Docker-compose file

At your project root folder, create a file called docker-compose.yml containing following code:

version: '3'services:
my-service:
image: my-image

Edit this file to user your own image and rename service as you wish. Then, start service with the help of docker-compose commands.

Available documentation on official site

Write the command you use in answers.md file.

3.2: Ports

Modify docker-compose.yml file to add port mount on your service

Restart container and test solution.

3.3: Environment variables

Modify docker-compose.yml file to add environment variables needed to use your service.

Restart container and test solution.

3.4: Detached

Restart services in detached mode. Write the command you use in answers.md file.

Visualise logs from your service. Write the command you use in answers.md file.

3.5: Upgrade

At any time, when you started your service in detached mode, you can reload a new version by executing the following line again:

docker-compose up -d

3.6: [BONUS] Dockerise MySQL

Use all knowledge you acquirred today to dockerise mysql database using official MySQL database docker image.

After this step, add mysql as another service to your docker-compose.yml file.

Answer:

version: '3.1'services:db:image: arthurmauvezin/docker-labs-mysql:latestcommand: --default-authentication-plugin=mysql_native_passwordrestart: alwaysenvironment:MYSQL_ROOT_PASSWORD: exampleMYSQL_DATABASE: project

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - Alaureau/devops-lab · GitHub
Skip to content

Latest commit

History

10 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Lab : Introduction Devops

This lab goal is to introduce DevOps concept (Git, Gitflow, Docker,...) seen in corresponding course. It is adapted to fit ece courses.

Update of repo

After having forked this repo, if you want to get updates from the last version of the repo parent, execute following commands

git remote add parent https://github.com/arthurmauvezin/devops-lab.git
git pull

Instructions

This lab rely on your web technologies project. The goal of this lab is to deploy your project with the help of docker and docker-compose.

This lab assume your web technologies project is finished, or at least that your can call your REST API to get, create, update or delete items in your zoo.

All the answers for questions asked in this lab instructions must be filled in answers.md file situated in your own fork of this repo.

This lab must be completed individually.

1: Git

1.0: Create a Github account

Go to Github and create a personal account if you do not have one already.

1.1: Fork course repo

Go to devops-lab Github project and fork the repo to get your own copy of this repo into your newly created personal space.

To get more help about fork, see the official documentation

1.2: Clone your fork

Clone your newly forked project on your computer

1.3: Faire un commit

After the clone, you should have your copy of the project on your computer. Go into cloned folder and add your firstname and lastname to it.

Commit and push your changes. You should see your change on Github graphical interface.

1.4: Create a pull request

From your Github project fork page, create a pull request to propose your change to parent project (lab repo).

To get more help agout pull requests, see official documentation

1.5: Commit your project

Add your express js project to this git repo and commit to save it for the future.

In order to get your grade, at the end of the lab, commit and push all changes your made to your repo.

2: Docker

2.0: Documentation

2.1: Dockerise your application

At the root directory of your project, create a file called Dockerfile able to build a node image conaining your express code.

Help:

  • Check Dockerfile reference documentation if needed
  • Base your image on node official image Docker Hub
  • Node use librairies to install on host before starting program (cf. npm <commands>). To install these librairies, execute following command in Dockerfile.
npm install <my_dependencies>
  • WORKDIR command might help
  • If you want to optimize, use Alpine images

2.2: Run your app

Start a docker container from the image you just created in the preceding question. Write the command you use in answers.md file.

Check log output message to validate that your server started correctly.

2.3: Access to your service

Try to access to your service (with postman for example). Why is your call fail ?

Restart container beeing careful to open needed port to get access to your service (see docker help). Write the command you use in answers.md file.

2.4: Environment variable

Modify your javascript code to read and user the value of following environement variables to connect to MySQL database:

  • MYSQL_HOST
  • MYSQL_PORT
  • MYSQL_DATABASE
  • MYSQL_USER
  • MYSQL_PASSWORD

Rebuild your image and run it again being careful to pass corresponding variable as arguments (see environement variables in docker run documentation).

Your application should run normally at this point.

2.5: Ship your image

In order to share your new image with the world, you will push your image to official public registry called Docker Hub (or Docker Store).

To do that:

  • Create yourself an account on Docker Hub
  • Create a new repository attached to your account
  • Then, push your image to your newly created repository

Your image cannot be pushed as it is. Why ? Modify the name of your image and push it again on your new repository on Docker Hub. Write the command you use in answers.md file.

2.6: Let's Run it

Now that your image is shared with the world, you can pull it from any computer on which Docker is installed.

Delete all your images created from the start of the lab on your computer. Write the command you use in answers.md file.

Start a container again with the name you pushed on Docker hub earlier. What happened before container start ? Write the command you use in answers.md file.

Your container works as intended but if you close your terminal, it will stop. Start your container again in detached mode and call your service to check accessibility. Write the command you use in answers.md file.

2.7: Naming

Your container is normally started. In detached mode, how can you tell that container is started ? What is the name of your container ? Write the command you use in answers.md file.

Restart your container by renaming it with a name corresponding to its function. Write the command you use in answers.md file.

2.8: Go inside

Your container running, open an interactive session to obseve files inside container.

Help: Executing following command get OS informations:

cat /etc/*release

What is the OS from the container ? Copy command ouput into answers.md

3: Docker Compose

In this part, we will user docker-compose to automate deployment of the app we built in part 1 of this lab.

3.0: Download docker-compose

Go to official site and install docker-compose for your OS.

Be careful: Stop all your running container before starting this part

3.1: Docker-compose file

At your project root folder, create a file called docker-compose.yml containing following code:

version: '3'services:
my-service:
image: my-image

Edit this file to user your own image and rename service as you wish. Then, start service with the help of docker-compose commands.

Available documentation on official site

Write the command you use in answers.md file.

3.2: Ports

Modify docker-compose.yml file to add port mount on your service

Restart container and test solution.

3.3: Environment variables

Modify docker-compose.yml file to add environment variables needed to use your service.

Restart container and test solution.

3.4: Detached

Restart services in detached mode. Write the command you use in answers.md file.

Visualise logs from your service. Write the command you use in answers.md file.

3.5: Upgrade

At any time, when you started your service in detached mode, you can reload a new version by executing the following line again:

docker-compose up -d

3.6: [BONUS] Dockerise MySQL

Use all knowledge you acquirred today to dockerise mysql database using official MySQL database docker image.

After this step, add mysql as another service to your docker-compose.yml file.

Answer:

version: '3.1'services:db:image: arthurmauvezin/docker-labs-mysql:latestcommand: --default-authentication-plugin=mysql_native_passwordrestart: alwaysenvironment:MYSQL_ROOT_PASSWORD: exampleMYSQL_DATABASE: project

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - Alaureau/devops-lab · GitHub
Skip to content

Latest commit

History

10 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Lab : Introduction Devops

This lab goal is to introduce DevOps concept (Git, Gitflow, Docker,...) seen in corresponding course. It is adapted to fit ece courses.

Update of repo

After having forked this repo, if you want to get updates from the last version of the repo parent, execute following commands

git remote add parent https://github.com/arthurmauvezin/devops-lab.git
git pull

Instructions

This lab rely on your web technologies project. The goal of this lab is to deploy your project with the help of docker and docker-compose.

This lab assume your web technologies project is finished, or at least that your can call your REST API to get, create, update or delete items in your zoo.

All the answers for questions asked in this lab instructions must be filled in answers.md file situated in your own fork of this repo.

This lab must be completed individually.

1: Git

1.0: Create a Github account

Go to Github and create a personal account if you do not have one already.

1.1: Fork course repo

Go to devops-lab Github project and fork the repo to get your own copy of this repo into your newly created personal space.

To get more help about fork, see the official documentation

1.2: Clone your fork

Clone your newly forked project on your computer

1.3: Faire un commit

After the clone, you should have your copy of the project on your computer. Go into cloned folder and add your firstname and lastname to it.

Commit and push your changes. You should see your change on Github graphical interface.

1.4: Create a pull request

From your Github project fork page, create a pull request to propose your change to parent project (lab repo).

To get more help agout pull requests, see official documentation

1.5: Commit your project

Add your express js project to this git repo and commit to save it for the future.

In order to get your grade, at the end of the lab, commit and push all changes your made to your repo.

2: Docker

2.0: Documentation

2.1: Dockerise your application

At the root directory of your project, create a file called Dockerfile able to build a node image conaining your express code.

Help:

  • Check Dockerfile reference documentation if needed
  • Base your image on node official image Docker Hub
  • Node use librairies to install on host before starting program (cf. npm <commands>). To install these librairies, execute following command in Dockerfile.
npm install <my_dependencies>
  • WORKDIR command might help
  • If you want to optimize, use Alpine images

2.2: Run your app

Start a docker container from the image you just created in the preceding question. Write the command you use in answers.md file.

Check log output message to validate that your server started correctly.

2.3: Access to your service

Try to access to your service (with postman for example). Why is your call fail ?

Restart container beeing careful to open needed port to get access to your service (see docker help). Write the command you use in answers.md file.

2.4: Environment variable

Modify your javascript code to read and user the value of following environement variables to connect to MySQL database:

  • MYSQL_HOST
  • MYSQL_PORT
  • MYSQL_DATABASE
  • MYSQL_USER
  • MYSQL_PASSWORD

Rebuild your image and run it again being careful to pass corresponding variable as arguments (see environement variables in docker run documentation).

Your application should run normally at this point.

2.5: Ship your image

In order to share your new image with the world, you will push your image to official public registry called Docker Hub (or Docker Store).

To do that:

  • Create yourself an account on Docker Hub
  • Create a new repository attached to your account
  • Then, push your image to your newly created repository

Your image cannot be pushed as it is. Why ? Modify the name of your image and push it again on your new repository on Docker Hub. Write the command you use in answers.md file.

2.6: Let's Run it

Now that your image is shared with the world, you can pull it from any computer on which Docker is installed.

Delete all your images created from the start of the lab on your computer. Write the command you use in answers.md file.

Start a container again with the name you pushed on Docker hub earlier. What happened before container start ? Write the command you use in answers.md file.

Your container works as intended but if you close your terminal, it will stop. Start your container again in detached mode and call your service to check accessibility. Write the command you use in answers.md file.

2.7: Naming

Your container is normally started. In detached mode, how can you tell that container is started ? What is the name of your container ? Write the command you use in answers.md file.

Restart your container by renaming it with a name corresponding to its function. Write the command you use in answers.md file.

2.8: Go inside

Your container running, open an interactive session to obseve files inside container.

Help: Executing following command get OS informations:

cat /etc/*release

What is the OS from the container ? Copy command ouput into answers.md

3: Docker Compose

In this part, we will user docker-compose to automate deployment of the app we built in part 1 of this lab.

3.0: Download docker-compose

Go to official site and install docker-compose for your OS.

Be careful: Stop all your running container before starting this part

3.1: Docker-compose file

At your project root folder, create a file called docker-compose.yml containing following code:

version: '3'services:
my-service:
image: my-image

Edit this file to user your own image and rename service as you wish. Then, start service with the help of docker-compose commands.

Available documentation on official site

Write the command you use in answers.md file.

3.2: Ports

Modify docker-compose.yml file to add port mount on your service

Restart container and test solution.

3.3: Environment variables

Modify docker-compose.yml file to add environment variables needed to use your service.

Restart container and test solution.

3.4: Detached

Restart services in detached mode. Write the command you use in answers.md file.

Visualise logs from your service. Write the command you use in answers.md file.

3.5: Upgrade

At any time, when you started your service in detached mode, you can reload a new version by executing the following line again:

docker-compose up -d

3.6: [BONUS] Dockerise MySQL

Use all knowledge you acquirred today to dockerise mysql database using official MySQL database docker image.

After this step, add mysql as another service to your docker-compose.yml file.

Answer:

version: '3.1'services:db:image: arthurmauvezin/docker-labs-mysql:latestcommand: --default-authentication-plugin=mysql_native_passwordrestart: alwaysenvironment:MYSQL_ROOT_PASSWORD: exampleMYSQL_DATABASE: project

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - Alaureau/devops-lab · GitHub
Skip to content

Latest commit

History

10 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Lab : Introduction Devops

This lab goal is to introduce DevOps concept (Git, Gitflow, Docker,...) seen in corresponding course. It is adapted to fit ece courses.

Update of repo

After having forked this repo, if you want to get updates from the last version of the repo parent, execute following commands

git remote add parent https://github.com/arthurmauvezin/devops-lab.git
git pull

Instructions

This lab rely on your web technologies project. The goal of this lab is to deploy your project with the help of docker and docker-compose.

This lab assume your web technologies project is finished, or at least that your can call your REST API to get, create, update or delete items in your zoo.

All the answers for questions asked in this lab instructions must be filled in answers.md file situated in your own fork of this repo.

This lab must be completed individually.

1: Git

1.0: Create a Github account

Go to Github and create a personal account if you do not have one already.

1.1: Fork course repo

Go to devops-lab Github project and fork the repo to get your own copy of this repo into your newly created personal space.

To get more help about fork, see the official documentation

1.2: Clone your fork

Clone your newly forked project on your computer

1.3: Faire un commit

After the clone, you should have your copy of the project on your computer. Go into cloned folder and add your firstname and lastname to it.

Commit and push your changes. You should see your change on Github graphical interface.

1.4: Create a pull request

From your Github project fork page, create a pull request to propose your change to parent project (lab repo).

To get more help agout pull requests, see official documentation

1.5: Commit your project

Add your express js project to this git repo and commit to save it for the future.

In order to get your grade, at the end of the lab, commit and push all changes your made to your repo.

2: Docker

2.0: Documentation

2.1: Dockerise your application

At the root directory of your project, create a file called Dockerfile able to build a node image conaining your express code.

Help:

  • Check Dockerfile reference documentation if needed
  • Base your image on node official image Docker Hub
  • Node use librairies to install on host before starting program (cf. npm <commands>). To install these librairies, execute following command in Dockerfile.
npm install <my_dependencies>
  • WORKDIR command might help
  • If you want to optimize, use Alpine images

2.2: Run your app

Start a docker container from the image you just created in the preceding question. Write the command you use in answers.md file.

Check log output message to validate that your server started correctly.

2.3: Access to your service

Try to access to your service (with postman for example). Why is your call fail ?

Restart container beeing careful to open needed port to get access to your service (see docker help). Write the command you use in answers.md file.

2.4: Environment variable

Modify your javascript code to read and user the value of following environement variables to connect to MySQL database:

  • MYSQL_HOST
  • MYSQL_PORT
  • MYSQL_DATABASE
  • MYSQL_USER
  • MYSQL_PASSWORD

Rebuild your image and run it again being careful to pass corresponding variable as arguments (see environement variables in docker run documentation).

Your application should run normally at this point.

2.5: Ship your image

In order to share your new image with the world, you will push your image to official public registry called Docker Hub (or Docker Store).

To do that:

  • Create yourself an account on Docker Hub
  • Create a new repository attached to your account
  • Then, push your image to your newly created repository

Your image cannot be pushed as it is. Why ? Modify the name of your image and push it again on your new repository on Docker Hub. Write the command you use in answers.md file.

2.6: Let's Run it

Now that your image is shared with the world, you can pull it from any computer on which Docker is installed.

Delete all your images created from the start of the lab on your computer. Write the command you use in answers.md file.

Start a container again with the name you pushed on Docker hub earlier. What happened before container start ? Write the command you use in answers.md file.

Your container works as intended but if you close your terminal, it will stop. Start your container again in detached mode and call your service to check accessibility. Write the command you use in answers.md file.

2.7: Naming

Your container is normally started. In detached mode, how can you tell that container is started ? What is the name of your container ? Write the command you use in answers.md file.

Restart your container by renaming it with a name corresponding to its function. Write the command you use in answers.md file.

2.8: Go inside

Your container running, open an interactive session to obseve files inside container.

Help: Executing following command get OS informations:

cat /etc/*release

What is the OS from the container ? Copy command ouput into answers.md

3: Docker Compose

In this part, we will user docker-compose to automate deployment of the app we built in part 1 of this lab.

3.0: Download docker-compose

Go to official site and install docker-compose for your OS.

Be careful: Stop all your running container before starting this part

3.1: Docker-compose file

At your project root folder, create a file called docker-compose.yml containing following code:

version: '3'services:
my-service:
image: my-image

Edit this file to user your own image and rename service as you wish. Then, start service with the help of docker-compose commands.

Available documentation on official site

Write the command you use in answers.md file.

3.2: Ports

Modify docker-compose.yml file to add port mount on your service

Restart container and test solution.

3.3: Environment variables

Modify docker-compose.yml file to add environment variables needed to use your service.

Restart container and test solution.

3.4: Detached

Restart services in detached mode. Write the command you use in answers.md file.

Visualise logs from your service. Write the command you use in answers.md file.

3.5: Upgrade

At any time, when you started your service in detached mode, you can reload a new version by executing the following line again:

docker-compose up -d

3.6: [BONUS] Dockerise MySQL

Use all knowledge you acquirred today to dockerise mysql database using official MySQL database docker image.

After this step, add mysql as another service to your docker-compose.yml file.

Answer:

version: '3.1'services:db:image: arthurmauvezin/docker-labs-mysql:latestcommand: --default-authentication-plugin=mysql_native_passwordrestart: alwaysenvironment:MYSQL_ROOT_PASSWORD: exampleMYSQL_DATABASE: project

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - Alaureau/devops-lab · GitHub
Skip to content

Latest commit

History

10 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Lab : Introduction Devops

This lab goal is to introduce DevOps concept (Git, Gitflow, Docker,...) seen in corresponding course. It is adapted to fit ece courses.

Update of repo

After having forked this repo, if you want to get updates from the last version of the repo parent, execute following commands

git remote add parent https://github.com/arthurmauvezin/devops-lab.git
git pull

Instructions

This lab rely on your web technologies project. The goal of this lab is to deploy your project with the help of docker and docker-compose.

This lab assume your web technologies project is finished, or at least that your can call your REST API to get, create, update or delete items in your zoo.

All the answers for questions asked in this lab instructions must be filled in answers.md file situated in your own fork of this repo.

This lab must be completed individually.

1: Git

1.0: Create a Github account

Go to Github and create a personal account if you do not have one already.

1.1: Fork course repo

Go to devops-lab Github project and fork the repo to get your own copy of this repo into your newly created personal space.

To get more help about fork, see the official documentation

1.2: Clone your fork

Clone your newly forked project on your computer

1.3: Faire un commit

After the clone, you should have your copy of the project on your computer. Go into cloned folder and add your firstname and lastname to it.

Commit and push your changes. You should see your change on Github graphical interface.

1.4: Create a pull request

From your Github project fork page, create a pull request to propose your change to parent project (lab repo).

To get more help agout pull requests, see official documentation

1.5: Commit your project

Add your express js project to this git repo and commit to save it for the future.

In order to get your grade, at the end of the lab, commit and push all changes your made to your repo.

2: Docker

2.0: Documentation

2.1: Dockerise your application

At the root directory of your project, create a file called Dockerfile able to build a node image conaining your express code.

Help:

  • Check Dockerfile reference documentation if needed
  • Base your image on node official image Docker Hub
  • Node use librairies to install on host before starting program (cf. npm <commands>). To install these librairies, execute following command in Dockerfile.
npm install <my_dependencies>
  • WORKDIR command might help
  • If you want to optimize, use Alpine images

2.2: Run your app

Start a docker container from the image you just created in the preceding question. Write the command you use in answers.md file.

Check log output message to validate that your server started correctly.

2.3: Access to your service

Try to access to your service (with postman for example). Why is your call fail ?

Restart container beeing careful to open needed port to get access to your service (see docker help). Write the command you use in answers.md file.

2.4: Environment variable

Modify your javascript code to read and user the value of following environement variables to connect to MySQL database:

  • MYSQL_HOST
  • MYSQL_PORT
  • MYSQL_DATABASE
  • MYSQL_USER
  • MYSQL_PASSWORD

Rebuild your image and run it again being careful to pass corresponding variable as arguments (see environement variables in docker run documentation).

Your application should run normally at this point.

2.5: Ship your image

In order to share your new image with the world, you will push your image to official public registry called Docker Hub (or Docker Store).

To do that:

  • Create yourself an account on Docker Hub
  • Create a new repository attached to your account
  • Then, push your image to your newly created repository

Your image cannot be pushed as it is. Why ? Modify the name of your image and push it again on your new repository on Docker Hub. Write the command you use in answers.md file.

2.6: Let's Run it

Now that your image is shared with the world, you can pull it from any computer on which Docker is installed.

Delete all your images created from the start of the lab on your computer. Write the command you use in answers.md file.

Start a container again with the name you pushed on Docker hub earlier. What happened before container start ? Write the command you use in answers.md file.

Your container works as intended but if you close your terminal, it will stop. Start your container again in detached mode and call your service to check accessibility. Write the command you use in answers.md file.

2.7: Naming

Your container is normally started. In detached mode, how can you tell that container is started ? What is the name of your container ? Write the command you use in answers.md file.

Restart your container by renaming it with a name corresponding to its function. Write the command you use in answers.md file.

2.8: Go inside

Your container running, open an interactive session to obseve files inside container.

Help: Executing following command get OS informations:

cat /etc/*release

What is the OS from the container ? Copy command ouput into answers.md

3: Docker Compose

In this part, we will user docker-compose to automate deployment of the app we built in part 1 of this lab.

3.0: Download docker-compose

Go to official site and install docker-compose for your OS.

Be careful: Stop all your running container before starting this part

3.1: Docker-compose file

At your project root folder, create a file called docker-compose.yml containing following code:

version: '3'services:
my-service:
image: my-image

Edit this file to user your own image and rename service as you wish. Then, start service with the help of docker-compose commands.

Available documentation on official site

Write the command you use in answers.md file.

3.2: Ports

Modify docker-compose.yml file to add port mount on your service

Restart container and test solution.

3.3: Environment variables

Modify docker-compose.yml file to add environment variables needed to use your service.

Restart container and test solution.

3.4: Detached

Restart services in detached mode. Write the command you use in answers.md file.

Visualise logs from your service. Write the command you use in answers.md file.

3.5: Upgrade

At any time, when you started your service in detached mode, you can reload a new version by executing the following line again:

docker-compose up -d

3.6: [BONUS] Dockerise MySQL

Use all knowledge you acquirred today to dockerise mysql database using official MySQL database docker image.

After this step, add mysql as another service to your docker-compose.yml file.

Answer:

version: '3.1'services:db:image: arthurmauvezin/docker-labs-mysql:latestcommand: --default-authentication-plugin=mysql_native_passwordrestart: alwaysenvironment:MYSQL_ROOT_PASSWORD: exampleMYSQL_DATABASE: project

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - Alaureau/devops-lab · GitHub
Skip to content

Latest commit

History

10 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Lab : Introduction Devops

This lab goal is to introduce DevOps concept (Git, Gitflow, Docker,...) seen in corresponding course. It is adapted to fit ece courses.

Update of repo

After having forked this repo, if you want to get updates from the last version of the repo parent, execute following commands

git remote add parent https://github.com/arthurmauvezin/devops-lab.git
git pull

Instructions

This lab rely on your web technologies project. The goal of this lab is to deploy your project with the help of docker and docker-compose.

This lab assume your web technologies project is finished, or at least that your can call your REST API to get, create, update or delete items in your zoo.

All the answers for questions asked in this lab instructions must be filled in answers.md file situated in your own fork of this repo.

This lab must be completed individually.

1: Git

1.0: Create a Github account

Go to Github and create a personal account if you do not have one already.

1.1: Fork course repo

Go to devops-lab Github project and fork the repo to get your own copy of this repo into your newly created personal space.

To get more help about fork, see the official documentation

1.2: Clone your fork

Clone your newly forked project on your computer

1.3: Faire un commit

After the clone, you should have your copy of the project on your computer. Go into cloned folder and add your firstname and lastname to it.

Commit and push your changes. You should see your change on Github graphical interface.

1.4: Create a pull request

From your Github project fork page, create a pull request to propose your change to parent project (lab repo).

To get more help agout pull requests, see official documentation

1.5: Commit your project

Add your express js project to this git repo and commit to save it for the future.

In order to get your grade, at the end of the lab, commit and push all changes your made to your repo.

2: Docker

2.0: Documentation

2.1: Dockerise your application

At the root directory of your project, create a file called Dockerfile able to build a node image conaining your express code.

Help:

  • Check Dockerfile reference documentation if needed
  • Base your image on node official image Docker Hub
  • Node use librairies to install on host before starting program (cf. npm <commands>). To install these librairies, execute following command in Dockerfile.
npm install <my_dependencies>
  • WORKDIR command might help
  • If you want to optimize, use Alpine images

2.2: Run your app

Start a docker container from the image you just created in the preceding question. Write the command you use in answers.md file.

Check log output message to validate that your server started correctly.

2.3: Access to your service

Try to access to your service (with postman for example). Why is your call fail ?

Restart container beeing careful to open needed port to get access to your service (see docker help). Write the command you use in answers.md file.

2.4: Environment variable

Modify your javascript code to read and user the value of following environement variables to connect to MySQL database:

  • MYSQL_HOST
  • MYSQL_PORT
  • MYSQL_DATABASE
  • MYSQL_USER
  • MYSQL_PASSWORD

Rebuild your image and run it again being careful to pass corresponding variable as arguments (see environement variables in docker run documentation).

Your application should run normally at this point.

2.5: Ship your image

In order to share your new image with the world, you will push your image to official public registry called Docker Hub (or Docker Store).

To do that:

  • Create yourself an account on Docker Hub
  • Create a new repository attached to your account
  • Then, push your image to your newly created repository

Your image cannot be pushed as it is. Why ? Modify the name of your image and push it again on your new repository on Docker Hub. Write the command you use in answers.md file.

2.6: Let's Run it

Now that your image is shared with the world, you can pull it from any computer on which Docker is installed.

Delete all your images created from the start of the lab on your computer. Write the command you use in answers.md file.

Start a container again with the name you pushed on Docker hub earlier. What happened before container start ? Write the command you use in answers.md file.

Your container works as intended but if you close your terminal, it will stop. Start your container again in detached mode and call your service to check accessibility. Write the command you use in answers.md file.

2.7: Naming

Your container is normally started. In detached mode, how can you tell that container is started ? What is the name of your container ? Write the command you use in answers.md file.

Restart your container by renaming it with a name corresponding to its function. Write the command you use in answers.md file.

2.8: Go inside

Your container running, open an interactive session to obseve files inside container.

Help: Executing following command get OS informations:

cat /etc/*release

What is the OS from the container ? Copy command ouput into answers.md

3: Docker Compose

In this part, we will user docker-compose to automate deployment of the app we built in part 1 of this lab.

3.0: Download docker-compose

Go to official site and install docker-compose for your OS.

Be careful: Stop all your running container before starting this part

3.1: Docker-compose file

At your project root folder, create a file called docker-compose.yml containing following code:

version: '3'services:
my-service:
image: my-image

Edit this file to user your own image and rename service as you wish. Then, start service with the help of docker-compose commands.

Available documentation on official site

Write the command you use in answers.md file.

3.2: Ports

Modify docker-compose.yml file to add port mount on your service

Restart container and test solution.

3.3: Environment variables

Modify docker-compose.yml file to add environment variables needed to use your service.

Restart container and test solution.

3.4: Detached

Restart services in detached mode. Write the command you use in answers.md file.

Visualise logs from your service. Write the command you use in answers.md file.

3.5: Upgrade

At any time, when you started your service in detached mode, you can reload a new version by executing the following line again:

docker-compose up -d

3.6: [BONUS] Dockerise MySQL

Use all knowledge you acquirred today to dockerise mysql database using official MySQL database docker image.

After this step, add mysql as another service to your docker-compose.yml file.

Answer:

version: '3.1'services:db:image: arthurmauvezin/docker-labs-mysql:latestcommand: --default-authentication-plugin=mysql_native_passwordrestart: alwaysenvironment:MYSQL_ROOT_PASSWORD: exampleMYSQL_DATABASE: project

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - Alaureau/devops-lab · GitHub
Skip to content

Latest commit

History

10 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Lab : Introduction Devops

This lab goal is to introduce DevOps concept (Git, Gitflow, Docker,...) seen in corresponding course. It is adapted to fit ece courses.

Update of repo

After having forked this repo, if you want to get updates from the last version of the repo parent, execute following commands

git remote add parent https://github.com/arthurmauvezin/devops-lab.git
git pull

Instructions

This lab rely on your web technologies project. The goal of this lab is to deploy your project with the help of docker and docker-compose.

This lab assume your web technologies project is finished, or at least that your can call your REST API to get, create, update or delete items in your zoo.

All the answers for questions asked in this lab instructions must be filled in answers.md file situated in your own fork of this repo.

This lab must be completed individually.

1: Git

1.0: Create a Github account

Go to Github and create a personal account if you do not have one already.

1.1: Fork course repo

Go to devops-lab Github project and fork the repo to get your own copy of this repo into your newly created personal space.

To get more help about fork, see the official documentation

1.2: Clone your fork

Clone your newly forked project on your computer

1.3: Faire un commit

After the clone, you should have your copy of the project on your computer. Go into cloned folder and add your firstname and lastname to it.

Commit and push your changes. You should see your change on Github graphical interface.

1.4: Create a pull request

From your Github project fork page, create a pull request to propose your change to parent project (lab repo).

To get more help agout pull requests, see official documentation

1.5: Commit your project

Add your express js project to this git repo and commit to save it for the future.

In order to get your grade, at the end of the lab, commit and push all changes your made to your repo.

2: Docker

2.0: Documentation

2.1: Dockerise your application

At the root directory of your project, create a file called Dockerfile able to build a node image conaining your express code.

Help:

  • Check Dockerfile reference documentation if needed
  • Base your image on node official image Docker Hub
  • Node use librairies to install on host before starting program (cf. npm <commands>). To install these librairies, execute following command in Dockerfile.
npm install <my_dependencies>
  • WORKDIR command might help
  • If you want to optimize, use Alpine images

2.2: Run your app

Start a docker container from the image you just created in the preceding question. Write the command you use in answers.md file.

Check log output message to validate that your server started correctly.

2.3: Access to your service

Try to access to your service (with postman for example). Why is your call fail ?

Restart container beeing careful to open needed port to get access to your service (see docker help). Write the command you use in answers.md file.

2.4: Environment variable

Modify your javascript code to read and user the value of following environement variables to connect to MySQL database:

  • MYSQL_HOST
  • MYSQL_PORT
  • MYSQL_DATABASE
  • MYSQL_USER
  • MYSQL_PASSWORD

Rebuild your image and run it again being careful to pass corresponding variable as arguments (see environement variables in docker run documentation).

Your application should run normally at this point.

2.5: Ship your image

In order to share your new image with the world, you will push your image to official public registry called Docker Hub (or Docker Store).

To do that:

  • Create yourself an account on Docker Hub
  • Create a new repository attached to your account
  • Then, push your image to your newly created repository

Your image cannot be pushed as it is. Why ? Modify the name of your image and push it again on your new repository on Docker Hub. Write the command you use in answers.md file.

2.6: Let's Run it

Now that your image is shared with the world, you can pull it from any computer on which Docker is installed.

Delete all your images created from the start of the lab on your computer. Write the command you use in answers.md file.

Start a container again with the name you pushed on Docker hub earlier. What happened before container start ? Write the command you use in answers.md file.

Your container works as intended but if you close your terminal, it will stop. Start your container again in detached mode and call your service to check accessibility. Write the command you use in answers.md file.

2.7: Naming

Your container is normally started. In detached mode, how can you tell that container is started ? What is the name of your container ? Write the command you use in answers.md file.

Restart your container by renaming it with a name corresponding to its function. Write the command you use in answers.md file.

2.8: Go inside

Your container running, open an interactive session to obseve files inside container.

Help: Executing following command get OS informations:

cat /etc/*release

What is the OS from the container ? Copy command ouput into answers.md

3: Docker Compose

In this part, we will user docker-compose to automate deployment of the app we built in part 1 of this lab.

3.0: Download docker-compose

Go to official site and install docker-compose for your OS.

Be careful: Stop all your running container before starting this part

3.1: Docker-compose file

At your project root folder, create a file called docker-compose.yml containing following code:

version: '3'services:
my-service:
image: my-image

Edit this file to user your own image and rename service as you wish. Then, start service with the help of docker-compose commands.

Available documentation on official site

Write the command you use in answers.md file.

3.2: Ports

Modify docker-compose.yml file to add port mount on your service

Restart container and test solution.

3.3: Environment variables

Modify docker-compose.yml file to add environment variables needed to use your service.

Restart container and test solution.

3.4: Detached

Restart services in detached mode. Write the command you use in answers.md file.

Visualise logs from your service. Write the command you use in answers.md file.

3.5: Upgrade

At any time, when you started your service in detached mode, you can reload a new version by executing the following line again:

docker-compose up -d

3.6: [BONUS] Dockerise MySQL

Use all knowledge you acquirred today to dockerise mysql database using official MySQL database docker image.

After this step, add mysql as another service to your docker-compose.yml file.

Answer:

version: '3.1'services:db:image: arthurmauvezin/docker-labs-mysql:latestcommand: --default-authentication-plugin=mysql_native_passwordrestart: alwaysenvironment:MYSQL_ROOT_PASSWORD: exampleMYSQL_DATABASE: project

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); GitHub - Alaureau/devops-lab · GitHub
Skip to content

Latest commit

History

10 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Lab : Introduction Devops

This lab goal is to introduce DevOps concept (Git, Gitflow, Docker,...) seen in corresponding course. It is adapted to fit ece courses.

Update of repo

After having forked this repo, if you want to get updates from the last version of the repo parent, execute following commands

git remote add parent https://github.com/arthurmauvezin/devops-lab.git
git pull

Instructions

This lab rely on your web technologies project. The goal of this lab is to deploy your project with the help of docker and docker-compose.

This lab assume your web technologies project is finished, or at least that your can call your REST API to get, create, update or delete items in your zoo.

All the answers for questions asked in this lab instructions must be filled in answers.md file situated in your own fork of this repo.

This lab must be completed individually.

1: Git

1.0: Create a Github account

Go to Github and create a personal account if you do not have one already.

1.1: Fork course repo

Go to devops-lab Github project and fork the repo to get your own copy of this repo into your newly created personal space.

To get more help about fork, see the official documentation

1.2: Clone your fork

Clone your newly forked project on your computer

1.3: Faire un commit

After the clone, you should have your copy of the project on your computer. Go into cloned folder and add your firstname and lastname to it.

Commit and push your changes. You should see your change on Github graphical interface.

1.4: Create a pull request

From your Github project fork page, create a pull request to propose your change to parent project (lab repo).

To get more help agout pull requests, see official documentation

1.5: Commit your project

Add your express js project to this git repo and commit to save it for the future.

In order to get your grade, at the end of the lab, commit and push all changes your made to your repo.

2: Docker

2.0: Documentation

2.1: Dockerise your application

At the root directory of your project, create a file called Dockerfile able to build a node image conaining your express code.

Help:

  • Check Dockerfile reference documentation if needed
  • Base your image on node official image Docker Hub
  • Node use librairies to install on host before starting program (cf. npm <commands>). To install these librairies, execute following command in Dockerfile.
npm install <my_dependencies>
  • WORKDIR command might help
  • If you want to optimize, use Alpine images

2.2: Run your app

Start a docker container from the image you just created in the preceding question. Write the command you use in answers.md file.

Check log output message to validate that your server started correctly.

2.3: Access to your service

Try to access to your service (with postman for example). Why is your call fail ?

Restart container beeing careful to open needed port to get access to your service (see docker help). Write the command you use in answers.md file.

2.4: Environment variable

Modify your javascript code to read and user the value of following environement variables to connect to MySQL database:

  • MYSQL_HOST
  • MYSQL_PORT
  • MYSQL_DATABASE
  • MYSQL_USER
  • MYSQL_PASSWORD

Rebuild your image and run it again being careful to pass corresponding variable as arguments (see environement variables in docker run documentation).

Your application should run normally at this point.

2.5: Ship your image

In order to share your new image with the world, you will push your image to official public registry called Docker Hub (or Docker Store).

To do that:

  • Create yourself an account on Docker Hub
  • Create a new repository attached to your account
  • Then, push your image to your newly created repository

Your image cannot be pushed as it is. Why ? Modify the name of your image and push it again on your new repository on Docker Hub. Write the command you use in answers.md file.

2.6: Let's Run it

Now that your image is shared with the world, you can pull it from any computer on which Docker is installed.

Delete all your images created from the start of the lab on your computer. Write the command you use in answers.md file.

Start a container again with the name you pushed on Docker hub earlier. What happened before container start ? Write the command you use in answers.md file.

Your container works as intended but if you close your terminal, it will stop. Start your container again in detached mode and call your service to check accessibility. Write the command you use in answers.md file.

2.7: Naming

Your container is normally started. In detached mode, how can you tell that container is started ? What is the name of your container ? Write the command you use in answers.md file.

Restart your container by renaming it with a name corresponding to its function. Write the command you use in answers.md file.

2.8: Go inside

Your container running, open an interactive session to obseve files inside container.

Help: Executing following command get OS informations:

cat /etc/*release

What is the OS from the container ? Copy command ouput into answers.md

3: Docker Compose

In this part, we will user docker-compose to automate deployment of the app we built in part 1 of this lab.

3.0: Download docker-compose

Go to official site and install docker-compose for your OS.

Be careful: Stop all your running container before starting this part

3.1: Docker-compose file

At your project root folder, create a file called docker-compose.yml containing following code:

version: '3'services:
my-service:
image: my-image

Edit this file to user your own image and rename service as you wish. Then, start service with the help of docker-compose commands.

Available documentation on official site

Write the command you use in answers.md file.

3.2: Ports

Modify docker-compose.yml file to add port mount on your service

Restart container and test solution.

3.3: Environment variables

Modify docker-compose.yml file to add environment variables needed to use your service.

Restart container and test solution.

3.4: Detached

Restart services in detached mode. Write the command you use in answers.md file.

Visualise logs from your service. Write the command you use in answers.md file.

3.5: Upgrade

At any time, when you started your service in detached mode, you can reload a new version by executing the following line again:

docker-compose up -d

3.6: [BONUS] Dockerise MySQL

Use all knowledge you acquirred today to dockerise mysql database using official MySQL database docker image.

After this step, add mysql as another service to your docker-compose.yml file.

Answer:

version: '3.1'services:db:image: arthurmauvezin/docker-labs-mysql:latestcommand: --default-authentication-plugin=mysql_native_passwordrestart: alwaysenvironment:MYSQL_ROOT_PASSWORD: exampleMYSQL_DATABASE: project

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors