- Published on
Commonly used Dockerfile and scripts
- Authors
- Name
- Yuchen Wei
For JAVA
FROM openjdk-8-jre-dmp:latest
LABEL maintainer="qi.gao"
ENV VERSION 2.0.0
COPY apollo-adminservice/target/apollo-adminservice-${VERSION}.jar /app.jar
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo "Asia/Shanghai" > /etc/timezone
EXPOSE 8090
ENTRYPOINT java -XX:+PrintFlagsFinal \
-XX:+UnlockExperimentalVMOptions \
-XX:+UseCGroupMemoryLimitForHeap \
$JAVA_OPTS -jar /app.jar
For Front
FROM docker-local.art.ocp.csvw.com/mac/node:10 as builder
WORKDIR /app
COPY ./ /app/
RUN npm config set sass_binary_site=https://npm.taobao.org/mirrors/node-sass
RUN npm install --registry https://registry.npm.taobao.org
RUN npm run build
FROM docker-local.art.ocp.csvw.com/mac/nginx:1.16.1
LABEL io.daocloud.system=build-in
#RUN sudo sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list && apt-get update && apt-get install procps
WORKDIR /app
# copy from node builder
COPY --from=builder /app/dist /usr/share/nginx/html
COPY --from=builder /app/nginx.conf /etc/nginx/nginx.conf
COPY --from=builder /app/run.sh /app/run.sh
# set env default value.
ENV USER_CENTER_URL=http://dmp-user-center:9050 \
HELP_URL=https://guide.daocloud.io/dmp-2.4 \
DMP_META=http://dmp-apollo-configservice:8080 \
TWICE_URL=http://dmp-twice:8765 \
CONFIG_CENTER_URL=http://dmp-apollo-adminservice:8090 \
FATE_URL=http://dmp-fate:9056
## add permissions for nginx user, https://www.rockyourcode.com/run-docker-nginx-as-non-root-user/
RUN chown -R nginx:nginx /app && \
chown -R nginx:nginx /usr/share/nginx && \
chown -R nginx:nginx /var/cache/nginx && \
chown -R nginx:nginx /var/log/nginx && \
chown -R nginx:nginx /etc/nginx
RUN touch /var/run/nginx.pid && \
chown -R nginx:nginx /var/run/nginx.pid && \
touch /etc/nginx/nginx.conf.old && \
chown -R nginx:nginx /etc/nginx/nginx.conf.old && \
chmod -R 777 /app /usr/share/nginx /var/cache/ /var/log/ /etc/nginx /var/run
USER nginx
EXPOSE 8080
CMD /app/run.sh && nginx -g 'daemon off;'
Automatically push image script
#!/bin/bash
set -e
if [[ "$1" =~ (2[0-4][0-9]|25[0-5]|1[0-9][0-9]|[1-9]?[0-9])(\.(2[0-4][0-9]|25[0-5]|1[0-9][0-9]|[1-9]?[0-9])){3} ]];then
echo "$0 [镜像仓库地址] "
registry_ip=$1
for i in `docker images --format="{{.Repository}}:{{.Tag}}" | grep "ingress\|loadbalance\|busybox\|keep"`
do
docker tag $i $registry_ip"/"$i
done
else
exit 1
fi
Yarn 3.0 on docker
Beacuse of :https://github.com/vercel/next.js/discussions/33567
So: Step 1:
Download the base image
docker pull centos:8
Execute the following code in container
cd /etc/yum.repos.d/
sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
yum update -y
curl --silent --location https://rpm.nodesource.com/setup_18.x | bash -
yum -y install nodejs
yum -y install gcc-c++ make
curl -o- -L https://yarnpkg.com/install.sh | bash
yarn set version 3.6.1
dnf --enablerepo=powertools install glibc-static
Build the new docker image
docker commit <docker_id> next:1.0
Use this dockerfile to package
FROM x81336/next:5.0
#RUN apk add --no-cache libc6-compat
WORKDIR /app
COPY package.json yarn.lock ./
RUN yarn set version 3.6.1 & yarn install
COPY . .
RUN rm -rf node_modules & cp -r /node_modules .
RUN yarn install
RUN yarn add @next/font -D & yarn add --dev sucrase
RUN yarn build
EXPOSE 3000
ENV PORT 3000
CMD ["node_modules/.bin/next", "start"]