Docker install in /src/app/src/ckan but I got permission error for /var/lib/ckan #7652
Closed
MichaelHarmsTIB
started this conversation in
General
Replies: 4 comments
-
In the container I tried to set the ENV with export, after logout the default value is set again. |
Beta Was this translation helpful? Give feedback.
0 replies
-
Support request, moving to Discussions for support |
Beta Was this translation helpful? Give feedback.
0 replies
-
It looks like you are using the Keitaro CKAN Docker...are you able to ask the maintainers of that repo? |
Beta Was this translation helpful? Give feedback.
0 replies
-
Nevermind I solved the problem by myself. |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
CKAN version
Describe the bug
I created a Dockerfile for ckan, and the installation path is /srv/app/src/ckan but I got always a permission denied error for /var/lib/ckan.
But there is no directory under /var/lib/.
Steps to reproduce
I attached my Dockerfile
Expected behavior
Directories are the configured directories, and not fantasy directories.
Additional details
`##################
Build CKAN
##################
FROM ubuntu:focal as ckanbuild
Used by Github Actions to tag the image with
ENV IMAGE_TAG=2.9.8-focal
Set CKAN version to build
ENV GIT_URL=https://github.com/ckan/ckan.git
ENV GIT_BRANCH=ckan-2.9.8
Set timezone
ENV TZ=UTC
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
Set Locale
ENV LC_ALL=en_US.UTF-8
Set src dirs
ENV SRC_DIR=/srv/app/src
ENV PIP_SRC=${SRC_DIR}
WORKDIR ${SRC_DIR}
Set the locale
RUN apt-get update
RUN apt-get install --no-install-recommends -y locales nano
RUN sed -i "/$LC_ALL/s/^# //g" /etc/locale.gen
RUN dpkg-reconfigure --frontend=noninteractive locales
RUN update-locale LANG=${LC_ALL}
Instal apt-utils
RUN apt-get install --no-install-recommends -y
apt-utils
Packages to build CKAN requirements and plugins
RUN apt-get install --no-install-recommends -y
git
curl
ca-certificates
python3
libpq-dev
linux-headers-generic
gcc-10
make
g++-10
autoconf
automake
libtool
patch
libpcre3-dev
libpcre3
python3-dev
libffi-dev
libxml2-dev
libxslt-dev
Use gcc 10
RUN update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 100 --slave /usr/bin/g++ g++ /usr/bin/g++-10 --slave /usr/bin/gcov gcov /usr/bin/gcov-10 --slave /usr/bin/x86_64-linux-gnu-gcc x86_64-linux-gnu-gcc /usr/bin/x86_64-linux-gnu-gcc-10
Link python to python3
RUN ln -s /usr/bin/python3 /usr/bin/python
Create the src directory
RUN mkdir -p ${SRC_DIR}
Install pip
RUN curl -o ${SRC_DIR}/get-pip.py https://bootstrap.pypa.io/get-pip.py &&
python ${SRC_DIR}/get-pip.py
Downgrade setuptools so that CKAN requirements can be built
RUN pip install setuptools==44.1.0
Fetch and build CKAN and requirements
RUN pip install -e git+${GIT_URL}@${GIT_BRANCH}#egg=ckan
Copy patches and apply patches script
COPY ./patches ${SRC_DIR}/patches
COPY ./scripts/apply_ckan_patches.sh ${SRC_DIR}/apply_ckan_patches.sh
Apply patches
RUN ${SRC_DIR}/apply_ckan_patches.sh
RUN rm -rf /srv/app/src/ckan/.git
RUN pip wheel --wheel-dir=/wheels -r ckan/requirements.txt
RUN pip wheel --wheel-dir=/wheels uWSGI==2.0.20 gevent==21.12.0 greenlet==1.1.3
###########################
Default-Extensions
###########################
FROM ubuntu:focal as extbuild
Set src dirs
ENV SRC_DIR=/srv/app/src
ENV PIP_SRC=${SRC_DIR}
List of default extensions
ENV DEFAULT_EXTENSIONS envvars
Locations and tags, please use specific tags or revisions
ENV ENVVARS_GIT_URL=https://github.com/okfn/ckanext-envvars
ENV ENVVARS_GIT_BRANCH=0.0.1
RUN apt-get update &&
apt-get install --no-install-recommends -y
git
curl
ca-certificates
python3
python3-dev
Link python to python3
RUN ln -s /usr/bin/python3 /usr/bin/python
Create the src directory
RUN mkdir -p ${SRC_DIR}
Install pip
RUN curl -o ${SRC_DIR}/get-pip.py https://bootstrap.pypa.io/get-pip.py &&
python ${SRC_DIR}/get-pip.py
Downgrade setuptools so that CKAN requirements can be built
RUN pip install setuptools==44.1.0
Fetch and build the default CKAN extensions
RUN pip wheel --wheel-dir=/wheels git+${ENVVARS_GIT_URL}@${ENVVARS_GIT_BRANCH}#egg=ckanext-envvars
############
MAIN
############
FROM ubuntu:focal
LABEL maintainer="Keitaro Inc info@keitaro.com"
LABEL org.opencontainers.image.source https://github.com/keitaroinc/docker-ckan
Set timezone
ENV TZ=UTC
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
Set Locale
ENV LC_ALL=en_US.UTF-8
Set the locale
RUN apt-get update &&
apt-get install --no-install-recommends -y locales &&
sed -i "/$LC_ALL/s/^# //g" /etc/locale.gen &&
dpkg-reconfigure --frontend=noninteractive locales &&
update-locale LANG=${LC_ALL} &&
rm -rf /var/lib/apt/lists/*
ENV APP_DIR=/srv/app
ENV SRC_DIR=/srv/app/src
ENV CKAN_DIR=${SRC_DIR}/ckan
ENV DATA_DIR=/srv/app/data
ENV PIP_SRC=${SRC_DIR}
ENV CKAN_SITE_URL=http://localhost:5000
ENV CKAN__PLUGINS envvars image_view text_view recline_view datastore xloader
ENV CKAN__PLUGINS_VIEWS envvars image_view text_view recline_view
Install necessary packages to run CKAN
RUN apt-get update &&
apt-get install --no-install-recommends -y
gettext
curl
ca-certificates
libpq5
git
postgresql-client
python3
python3-distutils
libpython3.8
libmagic1
libpcre3
libxslt1.1
libxml2
tzdata
apache2-utils &&
rm -rf /var/lib/apt/lists/* &&
# Create SRC_DIR
mkdir -p ${SRC_DIR} &&
# Link python to python3
ln -s /usr/bin/python3 /usr/bin/python
Install pip
RUN curl -o ${SRC_DIR}/get-pip.py https://bootstrap.pypa.io/get-pip.py &&
python ${SRC_DIR}/get-pip.py
Downgrade setuptools so that CKAN requirements can be built
RUN pip install setuptools==44.1.0
Get artifacts from build stages
COPY --from=ckanbuild /wheels /srv/app/wheels
COPY --from=extbuild /wheels /srv/app/ext_wheels
COPY --from=ckanbuild /srv/app/src/ckan ${CKAN_DIR}
COPY ./scripts/production.ini ${APP_DIR}/production.ini
Additional install steps for build stages artifacts
RUN pip install --no-index --find-links=/srv/app/wheels uWSGI==2.0.20 gevent==21.12.0
Create a local user and group to run the app
RUN groupadd -g 92 ckan &&
useradd -rm -d /srv/app -s /bin/bash -g ckan -u 92 ckan
#RUN echo "user_name ALL=PASSWD: ALL" > /etc/sudoers.d/user_name
WORKDIR ${CKAN_DIR}
Install CKAN
RUN pip install -e /srv/app/src/ckan &&
cp who.ini ${APP_DIR} &&
pip install --no-index --find-links=/srv/app/wheels -r requirements.txt &&
# Install default CKAN extensions
pip install --no-index --find-links=/srv/app/ext_wheels ckanext-envvars &&
# Create and update CKAN config
# Generate CKAN config
#ckan generate config ${APP_DIR}/production.ini &&
# Configure plugins
ckan config-tool ${APP_DIR}/production.ini "beaker.session.secret = " &&
#ckan config-tool ${APP_DIR}/production.ini "ckan.plugins = ${CKAN__PLUGINS}" &&
#ckan config-tool ${APP_DIR}/production.ini "ckan.views.default_views = ${CKAN__PLUGINS_VIEWS}" &&
# Create the data directory
mkdir ${DATA_DIR} &&
# Webassets can't be loaded from env variables at runtime, it needs to be in the config so that it is created
ckan config-tool ${APP_DIR}/production.ini "ckan.webassets.path = ${DATA_DIR}/webassets" &&
#ckan config-tool ${APP_DIR}/production.ini "ckan.storage_path = ${DATA_DIR}/filestore" &&
# Set the default level for extensions to INFO
ckan config-tool ${APP_DIR}/production.ini -s logger_ckanext -e level=INFO &&
# Change ownership to app user
chown -R ckan:ckan /srv/app &&
chown -R www-data:ckan /srv/app/data
XLoader
RUN pip install -e 'git+https://github.com/ckan/ckanext-xloader.git@master#egg=ckanext-xloader' &&
pip install -r ${APP_DIR}/src/ckanext-xloader/requirements.txt &&
pip install -U requests[security]
DOI
RUN pip install -e 'git+https://github.com/NaturalHistoryMuseum/ckanext-doi.git#egg=ckanext-doi'
PDF VIEW
RUN pip install ckanext-pdfview
GEO VIEW
RUN pip install -e git+https://github.com/ckan/ckanext-geoview.git#egg=ckanext-geoview
GEO JSON
#RUN pip install -e "git+https://github.com/ckan/ckanext-spatial.git#egg=ckanext-spatial"
#RUN pip install -r ${APP_DIR}/src/ckanext-spatial/requirements.txt
Remove wheels
RUN rm -rf /srv/app/wheels /srv/app/ext_wheels
Copy necessary scripts
COPY setup/app ${APP_DIR}
WORKDIR ${APP_DIR}
Create entrypoint directory for children image scripts
ONBUILD RUN mkdir docker-entrypoint.d
Create afterinit directory for children image scripts
ONBUILD RUN mkdir docker-afterinit.d
EXPOSE 5000
HEALTHCHECK --interval=10s --timeout=5s --retries=5 CMD curl --fail http://localhost:5000/api/3/action/status_show || exit 1
USER ckan
CMD ["/srv/app/start_ckan.sh"]
`
Beta Was this translation helpful? Give feedback.
All reactions