আমি আমার নোড.জেএস অ্যাপ্লিকেশনটিকে ডকারাইজ করার চেষ্টা করছি। কনটেইনারটি তৈরি হয়ে গেলে আমি এটি চালাতে চাই git clone
এবং নোড সার্ভারটি শুরু করি। অতএব আমি এই অপারেশনগুলিকে একটি .sh স্ক্রিপ্টে রেখেছি। এবং স্ক্রিপ্টটি ENTRYPOINT- তে একক কমান্ড হিসাবে চালান:
FROM ubuntu:14.04
RUN apt-get update && apt-get install -y build-essential libssl-dev gcc curl npm git
#install gcc 4.9
RUN apt-get install -y software-properties-common python-software-properties
RUN add-apt-repository -y ppa:ubuntu-toolchain-r/test
RUN apt-get update
RUN apt-get install -y libstdc++-4.9-dev
#install newst nodejs
RUN curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -
RUN apt-get install -y nodejs
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
ADD package.json /usr/src/app/
RUN npm install
ADD docker-entrypoint.sh /usr/src/app/
EXPOSE 8080
ENTRYPOINT ["/usr/src/app/docker-entrypoint.sh"]
আমার ডকার-এন্ট্রিপয়েন্ট.শ দেখতে দেখতে এই রকম:
git clone git@<repo>.git
git add remote upstream git@<upstream_repo>.git
/usr/bin/node server.js
এই চিত্রটি তৈরির পরে চালান:
docker run --env NODE_ENV=development -p 8080:8080 -t -i <image>
আমি পাচ্ছি:
docker: Error response from daemon: oci runtime error: exec: "/usr/src/app/docker-entrypoint.sh": permission denied.
আমি ধারকটিতে শেল দিয়েছি এবং ডকার-এন্ট্রি পয়েন্টের অনুমতি হ'ল:
-rw-r--r-- 1 root root 292 Aug 10 18:41 docker-entrypoint.sh
তিনটি প্রশ্ন:
আমার বাশ স্ক্রিপ্টের ভুল বাক্য গঠন আছে?
কোনও ছবিতে এটি যুক্ত করার আগে আমি কীভাবে বাশ ফাইলের অনুমতি পরিবর্তন করব?
ব্যাশ স্ক্রিপ্টটি ব্যবহার না করে এন্ট্রিপয়েন্টে একাধিক গিট কমান্ড চালানোর সর্বোত্তম উপায় কী?
ধন্যবাদ।
.sh
এক্সটেনশনটি একটি বিভ্রান্তিকর ছাপ যা সম্পর্কে দোভাষী এটা নির্বাহ করতে পারেন ছেড়ে। আপনি এটি গ্রহণের বিষয়ে বিবেচনা করতে পারেন - ইউনিক্স কমান্ডগুলির এক্সটেনশনগুলি রাখার জন্য এটি প্রচলিত নয় ( ls.elf
উদাহরণস্বরূপ আপনি চালনা করেন না )।
exec
সেভাবে খোল পারি ? এটি bash
উপসর্গ প্রয়োজন হবে না ?