برای ساختن ایمیج به اندپوینت زیر درخواست POST ارسال میکنیم. ایمیج از روی یه tar و Dockerfile ساخته میشه. نکته اینه که میتونی اسم Dockerfile رو هر چیزی بزاری و بعدش با ست کردن کوئری استرینگ بگی Dockerfile کیه.
/build
قبل از ساختن ایمیج از روی داکر فایل daemon داکر میاد یه ولیدیشن روی Dockerfile میره. اگه اشتباهی داشته باشه ارور میده.
مسیر Dockerfile رو بهش میدی. ولی اگه remote رو مشخص کرده باشی میاد توی اون دنبال Dockerfile میگرده. مسیر رو چجوری باید بهش داد؟
تگی که به ایمیج داده میشه
If the URI points to a single text file, the file’s contents are placed into a file called Dockerfile
and the image is built from that file.
If the URI points to a tarball, the file is downloaded by the daemon and the contents therein used as the context for the build.
If the URI points to a tarball and the dockerfile
parameter is also specified, there must be a file with the corresponding path inside the tarball.
برای دادن URI ریپوزیتوری:
https://forums.docker.com/t/how-to-build-an-image-using-docker-api/31807
https://forums.docker.com/t/how-to-build-an-image-using-docker-api/31807/2
نکته: وقتی داری توی terminal برای ساخت ایمیج از روی یه داکر فایل اقدام میکنی حتما شده که به این ارور برخورد بکنی Docker build error, archive/tar: sockets not supported. یعنی چی؟ میدونی داستان اینجا هست که چونکه دستورات اجرا شده از طریق ترمینال هم برای docker API درخواست رو ارسال میکنه و این یعنی اینکه قبل از اینکه Dockerfile رو برای daemon داکر بفرسته اونو tar میکنه.
و چونکه توی اون دایرکتوری که دستور docker build . رو زدی یه فایل socket وجود داره این ارور رو داده.