Docker Image 相關
*建立映像檔
# 於當前目錄,按Dockerfile.test中的指令,建立test:v1 ({name:tag})的映像檔
docker build . -f Dockrfile.test -t test:v1
*拉取與推送映像檔
# docker hub 下載image ({name:tag})
docker pull node:alpine
# node:alpine 重新命名標籤 username/nodea:alpine
docker tag node:alpine username/nodea:alpine
# 推送至私人倉庫
docker push username/node:alpine
*ENV 環境變數
ENV ANT_HOME /opt/ant
*ARG傳入參數
FROM alpine
ARG NODE_ARG
ENV NODE_ENV="${NODE_ARG:-development}"
RUN echo "ARG=${NODE_ARG}, ENV=${NODE_ENV}"
CMD ehco "ARG=${NODE_ARG}, ENV=${NODE_ENV}"
# 傳入NODE_ARG
# DOCKER_BUILDKIT=0
DOCKER_BUILDKIT=0 docker build --build-arg NODE_ARG=staging .
*工作目錄 WORKDIR
# / 下
RUN echo "say hi" > hi.txt
WORKDIR /app
# /app 下
RUN echo "hello" > world.txt
*指定用戶USER
# 新增 group與user
RUN groupadd -r redis && useradd -r -g redis redis
# 指定當前user為redis
USER redis
# 以redis的身份執行reidis-server
RUN ["redis-server"]
FROM registry.test.com.tw/test/centos:openjdk8_tomcat8.5
ENV CATALINA_HOME /opt/tomcat
ENV SERVICE_HOME /usr/AP/fubon
ENV ANT_HOME /opt/ant
ENV JAVA_HOME /usr/lib/jvm/java-1.8.0-openjdk
ENV PATH="${PATH}:${ANT_HOME}/bin:${CATALINA_HOME}/bin"
ENV AWS_HOME="/root/aws"
RUN wget https://archive.apache.org/dist/ant/binaries/apache-ant-1.10.7-bin.tar.gz \
&& tar -zxvf apache-ant-1.10.7-bin.tar.gz \
&& rm apache-ant-1.10.7-bin.tar.gz \
&& mv apache-ant* ${ANT_HOME} \
&& yum install -y python3 \
&& pip3 install awscli --upgrade --user \
&& ln -s /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.252.b09-2.el7_8.x86_64/ /usr/lib/jvm/java-1.8.0-openjdk.x86_64 \
&& yum install -y httpd php php-gd
COPY server.xml ${CATALINA_HOME}/conf/
COPY my_entrypoint.sh /my_entrypoint.sh
RUN chmod -v +x /my_entrypoint.sh
COPY --chown=user:group file* /app/
COPY server_builder.sh ${SERVICE_HOME}/
#Set Alias
RUN echo "alias cdcm='cd /usr/AP/test/cm'" >> ~/.bashrc \
&& echo "alias restartTomcat='cd /opt/tomcat/bin; ./shutdown.sh; /bin/sleep 3; ps -ef | grep '\''org.apache.catalina.startup.Bootstrap start'\'' | grep -v grep | awk '\''{print $2}'\'' | xargs kill; ./startup.sh'" >> ~/.bashrc \
&& echo "alias cmant='cd /usr/AP/test/cm/src; ant; restartTomcat'" >> ~/.bashrc \
EXPOSE 8080
CMD ["-D","FOREGROUND"]
# 預設目錄
WORKDIR /usr/AP/test/
# 一定會執行
ENTRYPOINT ["/my_entrypoint.sh"]
* 複寫CMD
docker run --rm apache:v1 -v