برنامه نویسی یک شغل نیست، یک هنر است.
ساخت docker image برای اپلیکیشن انگولار

امروز درگیر ساخت docker image برای اپلیکیشن انگولار بودم. و دوست دارم این تجربه رو با شما عزیزان به اشتراک بگذارم.
اول که برای ساخت bundle، دستور ng build --prod رو اجرا کردم. بعد از اینکه فایل ها در پوشه
/dist/<project_name>
ذخیره شد، نوبت به تعریف Dockerfile در روت پروژه رسید. برای ساخت docker image از nginx:alpine استفاده کردم و فایل Dockerfile رو با محتوای زیر ساختم:
FROM nginx:alpine
COPY ./dist/<project_name> /usr/share/nginx/html
بعدش در روت پروژه دستور مربوط به ساخت image رو زدم و ساخته شد:
docker build .
وقتی که image رو ران کردم، متوجه شدم مشکل redirect دارم. یعنی مثلا وقتی پروژه رو از مسیر /login اجرا میکنم، اپلیکیشن ارور 404 میده.
برای حل این مشکل اول دستور docker ps رو اجرا کردم و container_id مربوط به اپلیکیشن رو پیدا کردم. بعدش با دستور زیر default.conf سرویس nginx رو از container به هاست کپی کردم:
docker cp 8fd28785b69e:/etc/nginx/conf.d/default.conf .
مقدار 8fd28785b69e در واقع CONTAINER ID مربوط به اپلیکیشن هست.
در تنظیم default.conf ، داخل بخش مربوط به لوکیشن روت، خط مربوط به try_files رو اضافه کردم:
server {
....
location / {
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
....
}
فایل default.conf رو داخل فولدر nginx گذاشتم و دستور کپی زیر رو به Dockerfile اضافه کردم.
COPY ./nginx/default.conf /etc/nginx/conf.d/default.conf
دوباره image رو ساختم و ران کردم. این بار اپلیکیشن درست بالا اومد و به خطای 404 نخوردم.
:)
مطلبی دیگر از این نویسنده
چه موقعیتی برای ریفکتور مناسب نیست؟
مطلبی دیگر در همین موضوع
نمایش زمان آخرین ورود کاربران در وردپرس بدون افزونه
بر اساس علایق شما
دیکتاتور