Как добавить multistage в dockerfile?
Необходимо организовать multistage в контейнере. Сборка в одном контейнере запуск того что собрали в другом, как переделать докерфайл?
# get image from...
FROM debian:9 as builder
# maintainer
LABEL maintainer="paffin"
#main dir
WORKDIR /usr/local/src/
#Env versions
ENV nginx_v="1.19.8" LuaJIT_v="2.0.5" ngx_v="0.3.0" lua_v="0.10.9rc7"
# updates
RUN apt-get -y update && apt-get -y upgrade && apt-get install -y wget build-essential libpcre3 libpcre3-dev zlib1g zlib1g-dev
# modules
RUN wget http://nginx.org/download/nginx-${nginx_v}.tar.gz && tar -zxvf nginx-${nginx_v}.tar.gz
RUN wget http://luajit.org/download/LuaJIT-${LuaJIT_v}.tar.gz && tar -zxvf LuaJIT-${LuaJIT_v}.tar.gz
RUN wget https://github.com/simpl/ngx_devel_kit/archive/v${ngx_v}.tar.gz && tar -zxvf v${ngx_v}.tar.gz
RUN wget https://github.com/openresty/lua-nginx-module/archive/v${lua_v}.tar.gz && tar -zxvf v${lua_v}.tar.gz
RUN cd LuaJIT-${LuaJIT_v} && make -j2 && make install
RUN cd nginx-${nginx_v} && export LUAJIT_LIB=/usr/local/lib && export LUAJIT_INC=/usr/local/LuaJIT/include/luajit-2.0
RUN cd nginx-${nginx_v} && ./configure --sbin-path=/usr/sbin/nginx \
--conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--user=nobody --group=nogroup \
--prefix=/usr/local/nginx \
--with-ld-opt='-Wl,-rpath,/usr/local/lib' \
--add-module=/usr/local/src/lua-nginx-module-${lua_v} \
--add-module=/usr/local/src/ngx_devel_kit-${ngx_v}
RUN cd nginx-${nginx_v} && make && make install
FROM builder
EXPOSE 80 22 443
CMD [ "nginx", "-g", "daemon off;" ]
Ответы (1 шт):
Автор решения: KoppeKTop
→ Ссылка
Этот вопрос должен быть в разделе про docker.
Нужно собрать в builder'е результат в отдельную папку и уже её копировать в отдельный image.
Что-то вроде:
# syntax=docker/dockerfile:1
FROM debian:9 as builder
WORKDIR /usr/local/src/
# сконфигурировать и собрать luajit и nginx на билд например в /usr/builder
FROM debian:9-slim
WORKDIR /usr/local
COPY --from=builder /usr/builder ./
EXPOSE 80 443
CMD [ "/usr/local/bin/nginx", "-g", "daemon off;" ]