Have fun using docker commands with Makefile!
*Fukuryu Ramen Watachi Main Branch (Honmachi, Osaka City)
Hello!
My name is Hide, the ramen king of Beyond Osaka Office.
This is my first post so I'm really nervous (sweat)
The impetus for writing this article was when I was job hunting.
When I was looking for a job, I had set up a development environment using Vagrant to create a portfolio, but
the PC specs were bad...it was extremely slow...it was the worst possible environment.
I found out about the existence of Docker, which is now popular on the Internet and SNS, and tried preparing it, but
what I really felt at that time was... ``Docker commands are really long and tedious...'' (TДT)
It's a shame because it works very smoothly...
When I enter various options, it becomes more than 20 characters, and it's very tedious to keep typing them every time.And
when the command is this long, I often make typos, which makes me twice as frustrated.
Everyone reading this has probably had the same experience ( ・`ω・´) Kiri
So let's take a look at how you can run docker commands with just a few characters!
What is docker?
First of all, do you know what docker is?
“It must be about container technology! ”
“It’s the whale one!
” ` `It works very lightweight, right? ”
All of the above are correct.
Docker is an extremely lightweight platform that uses container virtualization technology
to run programs quickly.
I don't think you can understand from this alone, so let's take a closer look m9(´∀`●) It's so good!!
Difference between hypervisor virtualization and container virtualization
There are two virtualization technologies that are often compared when explaining docker.
They are hypervisor virtualization and container virtualization, and Docker uses the latter virtualization.
First, we need to explain the difference between the two: hypervisor and docker engine.
hypervisor
A hypervisor works between the host OS and a VM (virtual machine),
emulating and controlling hardware such as the CPU and memory used by the VM.
With this, you can create multiple guest OSs of your choice on the host OS, and
the host OS and guest OS are isolated.
However, using multiple OSs means using multiple kernels, which
creates overhead and increases processing time, making it time-consuming to start and create VMs.
Docker Engine
Docker Engine controls the creation, startup, termination, deletion, etc. of docker.
You can use it by installing a resident Docker client such as Docker Desktop.
Unlike a hypervisor, Docker Engine does not create a guest OS and
shares the kernel with the host OS, so it has less overhead and is extremely fast and lightweight.
Although docker seems to have many advantages, one of its disadvantages is that the commands are very long.
Specifically, I sometimes type long commands like the one below....
docker-compose exec db bash -c 'mysql -u root -psecret'
What is Make tool?
This Make tool frees you from the docker commands that sometimes require such long commands.
As for how easy it is...
docker-compose exec db bash -c 'mysql -u root -psecret'
This command
make mysql
You can run it with just this command ヽ(´∀`*)ノ
This make tool was originally
a tool that allows you to easily build programs written in compiled programming languages such as C and C++.
But you can also use it to abbreviate commands as shown above! !
Now, let's install it! !
Install Make Tool
⚠For Mac users, it is installed in the terminal by default, so for Windows users, please take a look.
Install from official installer
Click Setup under [Complete package, except sources] to install the installer.
Click [Next] and install according to the installer instructions.
Set up your Windows environment so that Make can be used anywhere
Go to Control Panel ⇛ System and Security ⇛ System and click [Advanced System Settings]
Click [Environment Variables...].
It is up to you to choose whether to set the settings as user environment variables or system environment variables.
If “Path” is already set in the variable list, please refer to ①. If it is not set, please refer to ②.
① Add to “Path” variable
Select “Path” from the variable list and click Edit.
Double-click the blank field, paste the absolute path below, and press the [OK] button to complete the setup!
C:\Program Files (x86)\GnuWin32\bin
② Add a new “Path” variable
Click [New], enter the following variable name and variable value as shown in the image, and
press the [OK] button to complete the setup!
After typing "make" in Power shell, if it looks like the following, the setup is complete!
PS C:\Users\beyond_tokuhara>make make: *** No target specified and makefile not found. Aborted.
What is Makefile?
Now you can install Make.
However, you cannot omit the docker command just by installing it.
You need to create a Makefile to omit that.
is a file that describes rules
for compiling, managing dependencies, etc. executes processing based on the rules.
Now, let's take a look at how to write it!
The description method is very simple.
You can write it in the following 4 steps! !
① Input the arguments to be set in the make command.
② Perform a line break.
③For Windows users, press the Tab key; for Mac users, press the → | key.
④Write the docker command.
mysql: docker-compose exec db bash -c 'mysql -u root -psecret'
⚠If the file is UTF-8 and has a BOM, the following error will occur if you open a space and run it.
please press the Tab key to create a space instead of the space key
make mysql makefile:5: *** Missing separator. Aborted.
Enter the Make command
Now that everything is ready, let's enter the command!
If it looks like the following, it will be a success ヽ(*·ᗜ·)ノヽ(·ᗜ·* )ノ High touch!
PS C:\Users\beyond_tokuhara>make mysql docker-compose exec db bash -c 'mysql -u root -psecret' Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 14 Server version: 8.0 .21 MySQL Community Server - GPL Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
⚠Notes
- Omitting the docker command cannot be executed if there is no Makfile in the current directory.
・If you specify it with make -f, you can use the specified Makfile anywhere, but
if you run the Make command in a directory above the directory where docker-compose.yml and docker-compose.yaml are located, Please note that if you do so, the following error will occur.
PS C:\Users>make -f \Users\beyond_tokuhara\Makefile sql docker-compose exec db bash -c 'mysql -u root -psecret' ERROR: Can't find a suitable configuration file in this directory or any parent. Are you in the right directory? Supported filenames: docker-compose.yml, docker-compose.yaml make: *** [sql] Error 1
summary
What do you think?
So easy!
And I think I was able to execute the docker command with just a few characters (-`ω-)Wow!
Also, you can also play around with artisan commands by doing the following!
seed: docker-compose exec app php artisan db:seed
Makefiles are very convenient compared to aliases because they are less dependent on the environment and
can be used by immediately sharing files.
By all means, everyone, please enjoy a comfortable Docker life with Makefile.
Thank you for reading the article!