ساخت پروژه خود در داکر
اگر شما بخواهید شروع به نوشتن پروژه خود در یک زبان کنید. به طور مثال در پایتون (Python
)
در اولین قدم شما نیاز دارید محیط برنامه نویسی پایتون (Python
) را در کامپیوتر خود فراهم کنید .
مانند نصب پایتون (Python
) و ...
داکر (Docker
) برای شما شرایطی را محیا می کنید که تمام پروژه خود را داخل یک داکر ایمیج (Docker Image
) که قابل حمل است داشته باشید.
این داکر ایمیج ها (Docker Images
) توسط صدا کردن فایلی به نام داکر فایل (Docker File
) ساخته می شوند.
داکر فایل (Docker File)
در داکر فایل (Docker File
) آنچه پروژه شما به آن نیاز دارد را تعریف میکنیم.
در این محیط مجازی دسترسی به منابع سیستم از بقیه سیستم جدا شده است. پس باید پورت 80 پروژه برای اتصال از بیرون آماده باشد.
مزیت استفاده :
با استفاده از این سیستم می توانید پروژه خود را در هر کجا اجرا کنید.
چگونه یک داکر فایل (Docker File) بسازیم؟
یک پوشه می سازیم و به داخل آن (cd
) آن رفته و فایل به نام DockerFile
می سازیم.
دقت کنید که دقیقا نام این فایل DockerFile
باشد نه DockerFile.txt
و ...
# Use an official Python runtime as a parent image
FROM python:2.7-slim
# Set the working directory to /app
WORKDIR /app
# Copy the current directory contents into the container at /app
COPY . /app
# Install any needed packages specified in requirements.txt
RUN pip install --trusted-host pypi.python.org -r requirements.txt
# Make port 80 available to the world outside this container
EXPOSE 80
# Define environment variable
ENV NAME World
# Run app.py when the container launches
CMD ["python", "app.py"]
پروژه را می نویسیم
دو فایل دیگر با نام های requirements.txt
و app.py
در همان پوشه ایجاد می کنیم.
requirements.txt
Flask
Redis
app.py
from flask import Flask
from redis import Redis, RedisError
import os
import socket
redis = Redis(host="redis", db=0, socket_connect_timeout=2, socket_timeout=2)
app = Flask(__name__)
@app.route("/")
def hello():
try:
visits = redis.incr("counter")
except RedisError:
visits = "<i>cannot connect to Redis, counter disabled</i>"
html = "<h3>Hello {name}!</h3>" \
"<b>Hostname:</b> {hostname}<br/>" \
"<b>Visits:</b> {visits}"
return html.format(name=os.getenv("NAME", "world"), hostname=socket.gethostname(), visits=visits)
if __name__ == "__main__":
app.run(host='0.0.0.0', port=80)
همانطور که متوجه شدید ما پکیج های لازم را در requirements.txt تعریف کردیم و بعد از نصب الزامات در داکر فایل (Docker File
) این فایل صدا زده و پکیج های ذکر شده در آن را در پروژه نصب می کند.
پروژه را می سازیم
در پوشه ای که بودیم دستور ls
را وارد میکنیم تا محتویات پوشه را ببینم .
$ ls
محتویات باید به صورت زیر باشد.
Dockerfile app.py requirements.txt
دستور زیر را اجرا می کنیم تا داکر ایمیج (Docker Image
) خود را بسازیم.
docker build --tag=friendlyhello .
یا
docker build -t=friendlyhello .
با tag=friendlyhello:v0.0.1
این روش نوشتن در دستور بالا می توانیم ورژن نرم افزار خود را مشخص کنیم.
دستور زیر را می زنیم تا داکر ایمیج های (Docker Images
) خود را ببینیم.
$ docker image ls
خروجی :
REPOSITORY TAG IMAGE ID
friendlyhello latest 326387cea398
همانطور که مشاهده می کنید داکر ایمیج (Docker Image
) ما ساخته شده است.
با دستور زیر پروژه خود را اجرا می کنیم.
docker run -p 4000:80 friendlyhello
حالا میتوانیم در مرورگر خود پروژه را ببینیم با ادرس http://localhost:4000
اشتراک گذاری داکر امیج (Docker Image)
برای اینکار شما نیاز به ساخت یک اکانت در سایت داکر هاب دارید.
بعد از ساخت اکانت دستور زیر را میزنیم.
$ docker login
نیاز به علامت گذاری داکر امیج (Docker Image
) خود داریم به صورت زیر
$ docker tag image username/repository:tag
برای مثال
$ docker tag friendlyhello gordon/get-started:part2
برای مشاهده ایمیجی که الان نشانه گذاری کردیم دستور زیر را وارد می کنیم.
$ docker image ls
خروجی :
REPOSITORY TAG IMAGE ID CREATED SIZE
friendlyhello latest d9e555c53008 3 minutes ago 195MB
gordon/get-started part2 d9e555c53008 3 minutes ago 195MB
python 2.7-slim 1c7128a655f6 5 days ago 183MB
...
آپلود ایمیج
$ docker push username/repository:tag
اگر وارد اکانت خود در سایت داکر هاب شوید متوجه خواهید شد که پروژه شما در آن آپلود شده است
موفق باشید.