forked from RCOSDP/weko
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDockerfile.arm64
123 lines (111 loc) · 4.8 KB
/
Dockerfile.arm64
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
# Use Python-3.6:
FROM python:3.6-slim-buster as stage_1
# Configure Weko instance:
ENV INVENIO_WEB_HOST=127.0.0.1
ENV INVENIO_WEB_INSTANCE=invenio
ENV INVENIO_WEB_VENV=invenio
ENV INVENIO_WEB_HOST_NAME=invenio
ENV INVENIO_USER_PASS=uspass123
ENV INVENIO_POSTGRESQL_HOST=postgresql
ENV INVENIO_POSTGRESQL_DBNAME=invenio
ENV INVENIO_POSTGRESQL_DBUSER=invenio
ENV INVENIO_POSTGRESQL_DBPASS=dbpass123
ENV INVENIO_REDIS_HOST=redis
ENV INVENIO_ELASTICSEARCH_HOST=elasticsearch
ENV INVENIO_RABBITMQ_HOST=rabbitmq
ENV INVENIO_RABBITMQ_USER=guest
ENV INVENIO_RABBITMQ_PASS=guest
ENV INVENIO_RABBITMQ_VHOST=/
ENV INVENIO_WORKER_HOST=127.0.0.1
ENV SEARCH_INDEX_PREFIX=tenant1
# Configure SQLAlchemy connection pool
# see: https://docs.sqlalchemy.org/en/12/core/pooling.html#api-documentation-available-pool-implementations
ENV INVENIO_DB_POOL_CLASS=QueuePool
# provision_web_common_ubuntu14
RUN apt-get -y update --allow-releaseinfo-change && \
apt-get -y install curl git rlwrap screen vim gnupg libpcre3-dev && \
curl -sL https://deb.nodesource.com/setup_4.x | bash - && \
printf "\nPackage: *\nPin: origin deb.nodesource.com\nPin-Priority: 600" >> /etc/apt/preferences.d/nodesource && \
mkdir -p /usr/share/man/man1 && \
apt-get -y install \
libffi-dev \
libfreetype6-dev \
libjpeg-dev \
libmsgpack-dev \
libssl-dev \
libtiff-dev \
libxml2-dev \
libxslt-dev \
libzip-dev \
libjpeg-dev \
nodejs \
python-dev \
python-pip \
libpq-dev \
default-jre \
libreoffice-java-common \
libreoffice \
fonts-ipafont \
fonts-ipaexfont \
supervisor \
phantomjs
# setup_npm_and_css_js_filters
RUN su -c "npm install -g [email protected] [email protected] requirejs uglify-js"
# setup_virtualenvwrapper
RUN pip install -U setuptools pip && \
pip install -U virtualenvwrapper
# cleanup_web_ubuntu14
RUN apt-get -y autoremove && apt-get -y clean
WORKDIR /code
RUN adduser --uid 1000 --disabled-password --gecos '' invenio
USER invenio
COPY --chown=invenio:invenio scripts /code/scripts
COPY --chown=invenio:invenio tools /code/tools
COPY --chown=invenio:invenio modules /code/modules
COPY --chown=invenio:invenio packages.txt /code/packages.txt
COPY --chown=invenio:invenio packages-invenio.txt /code/packages-invenio.txt
COPY --chown=invenio:invenio requirements-weko-modules.txt /code/requirements-weko-modules.txt
COPY --chown=invenio:invenio invenio /code/invenio
COPY --chown=invenio:invenio postgresql /code/postgresql
COPY --chown=invenio:invenio scripts/instance.cfg /code/scripts/instance.cfg
# create instance.sh
SHELL ["/bin/bash", "-c"]
RUN source "$(which virtualenvwrapper.sh)" && \
mkvirtualenv "${INVENIO_WEB_VENV}" && \
cdvirtualenv && \
pip install pip==20.2.4 && \
pip install setuptools==57.5.0 && \
pip install -r "/code/packages.txt" && \
pip install --no-deps -r "/code/packages-invenio.txt" && \
pip install --no-deps -r "/code/requirements-weko-modules.txt" && \
mkdir -p "var/instance/" && \
mkdir -p "var/instance/data" && \
mkdir -p "var/instance/conf" && \
pip install "jinja2-cli>=0.6.0" && \
jinja2 "/code/scripts/instance.cfg" > "var/instance/conf/${INVENIO_WEB_INSTANCE}.cfg" && \
ln -s "$(pwd)/var/instance/conf/${INVENIO_WEB_INSTANCE}.cfg" "var/instance/${INVENIO_WEB_INSTANCE}.cfg" && \
cp -pf "/code/scripts/uwsgi.ini" "var/instance/conf/" && \
cp -pf "/code/modules/weko-theme/weko_theme/static/css/weko_theme/_variables.scss" "var/instance/data/" && \
cp -prf "/code/modules/weko-index-tree/weko_index_tree/static/indextree" "var/instance/data/"
ENV QT_QPA_PLATFORM=offscreen
RUN source "$(which virtualenvwrapper.sh)" && \
source /home/invenio/.virtualenvs/invenio/bin/activate && \
${INVENIO_WEB_INSTANCE} npm && \
cdvirtualenv "var/instance/static" && \
CI=true npm install "https://github.com/RCOSDP/invenio-search-js.git#feature/changePaginationForSearchAfterUse" --save && \
CI=true npm install [email protected] && \
CI=true npm install && \
cdvirtualenv "var/instance/static/node_modules/ckeditor/plugins" && \
CI=true git clone https://github.com/nmmf/base64image.git && \
${INVENIO_WEB_INSTANCE} collect -v && \
${INVENIO_WEB_INSTANCE} assets build && \
pip install uwsgi uwsgitop
# stage5
USER invenio
WORKDIR /code
ENV PATH=/home/invenio/.virtualenvs/invenio/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
ENV VIRTUALENVWRAPPER_PYTHON=/home/invenio/.virtualenvs/invenio/bin/python
RUN pip install virtualenvwrapper
RUN echo "source /home/invenio/.virtualenvs/invenio/bin/virtualenvwrapper.sh" >> ~/.bashrc ; echo "workon invenio" >> ~/.bashrc
CMD ["/bin/bash", "-c", "invenio run -h 0.0.0.0"]