how can i assign perticular user to EFS mount container folder

44 views Asked by At

I am Working with Odoo automation. I create a Docker file for Deployment. For the file system, I am using EFS. For Container I am using ECS. I want to mount my filestore in my container. The container filestore path is

/opt/s3_bucket/filestore/enterprise

data_dir=/opt/cfs_s3_bucket

and my data_dir path which i am using in odoo.conf

Here is my docker file

FROM debian:bullseye-slim

SHELL ["/bin/bash", "-xo", "pipefail", "-c"]
RUN apt-get update


RUN apt-get install -y python3-pip && apt-get install -y python3 curl python3-dev libxml2-dev libxslt1-dev zlib1g-dev libsasl2-dev libldap2-dev build-essential libssl-dev libffi-dev  libjpeg-dev libpq-dev  liblcms2-dev libblas-dev libatlas-base-dev fontconfig libfreetype6 libx11-6 libxext6 libxrender1 xfonts-75dpi xfonts-base

RUN echo "Python 3 version:" && python3 -c "import sys; print(sys.version)"
RUN python3 --version
RUN pip --version

RUN apt-get install -y npm

RUN npm install -g less less-plugin-clean-css
RUN apt-get install -y node-less

RUN  pip3 install awscli

ENV AWS_ACCESS_KEY_ID=<AWS_ACCESS_KEY_ID>
ENV AWS_SECRET_ACCESS_KEY=<AWS_SECRET_ACCESS_KEY>
ENV AWS_DEFAULT_REGION=us-east-1

RUN apt-get install -y postgresql
RUN echo "host    all             odoo_user             0.0.0.0/0               md5" >> /etc/postgresql/13/main/pg_hba.conf
RUN echo "listen_addresses = '*'" >> /etc/postgresql/13/main/postgresql.conf

USER postgres

RUN service postgresql start \
    && psql -c "CREATE DATABASE cfs_enterprise;" \
    && psql -c "CREATE USER odoo_user WITH PASSWORD 'cfs';" \
    && psql -c "ALTER USER odoo_user superuser CREATEDB;" \
    && psql -c "GRANT ALL PRIVILEGES ON DATABASE cfs_enterprise TO odoo_user;" \
    && service postgresql stop

USER root

VOLUME /var/lib/postgresql/data

RUN groupadd -r odoo && useradd -r -g odoo -d /opt/odoo odoo
RUN mkdir -p /opt/odoo && chown -R odoo:odoo /opt/odoo
RUN mkdir -p /opt/enterprise && chown -R odoo:odoo /opt/enterprise
RUN mkdir -p /opt/custom && chown -R odoo:odoo /opt/custom

RUN mkdir -p /opt/s3_bucket && chown -R odoo:odoo /opt/s3_bucket
RUN mkdir -p /opt/s3_bucket/filestore && chown -R odoo:odoo  /opt/s3_bucket/filestore
RUN mkdir -p /opt/s3_bucket/filestore/enterprise && chown -R odoo:odoo  /opt/s3_bucket/filestore/enterprise
RUN mkdir -p /opt/s3fs-fuse && chown -R odoo:odoo /opt/s3fs-fuse
WORKDIR /opt
RUN ls  -a

USER odoo
WORKDIR /opt/odoo

RUN git clone --depth 1 --branch 15.0 https://www.github.com/odoo/odoo /opt/odoo
USER odoo
WORKDIR /opt/enterprise
ARG GITLAB_ACCESS_TOKEN=<GITLAB_ACCESS_TOKEN>
RUN git clone -b 15.0 https://${GITLAB_ACCESS_TOKEN}:${GITLAB_ACCESS_TOKEN}@github.com/odoo/enterprise --single-branch  /opt/enterprise
COPY ./addons /opt/custom/addons
COPY ./third_party_addons /opt/custom/third_party_addons

RUN ls -a
USER root

USER root

RUN  pip3 install -r /opt/odoo/requirements.txt



RUN curl -o wkhtmltox.deb -sSL https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox_0.12.5-1.buster_amd64.deb \
    && echo 'ea8277df4297afc507c61122f3c349af142f31e5 wkhtmltox.deb' | sha1sum -c - \
    && apt-get install -y --no-install-recommends ./wkhtmltox.deb \
    && rm -rf /var/lib/apt/lists/* wkhtmltox.deb



RUN echo "[options]" >> /etc/odoo.conf && \
    echo "http_port = 8069" >> /etc/odoo.conf && \
    echo ";admin_passwd = admin" >> /etc/odoo.conf && \
    echo "db_host = localhost" >> /etc/odoo.conf && \
    echo "db_port = 5432" >> /etc/odoo.conf && \
    echo "db_user = odoo_user" >> /etc/odoo.conf && \
    echo "db_password = password" >> /etc/odoo.conf && \
    echo "db_name = db" >> /etc/odoo.conf && \
    echo "data_dir=/opt/s3_bucket" >> /etc/odoo.conf && \
    echo "addons_path = /opt/enterprise, /opt/odoo/addons, /opt/custom/addons, /opt/custom/third_party_addons" >> /etc/odoo.conf && \
    echo "logfile = /var/log/odoo/odoo.log" >> /etc/odoo.conf

RUN chown odoo /etc/odoo.conf
RUN chmod 640 /etc/odoo.conf

RUN mkdir /var/log/odoo
RUN chown odoo:root /var/log/odoo
RUN cat /etc/odoo.conf


RUN echo "[Unit]" >> /etc/systemd/system/odoo.service && \
    echo "Description = Odoo" >> /etc/systemd/system/odoo.service && \
    echo "Documentation = http://www.odoo.com" >> /etc/systemd/system/odoo.service && \
    echo "[Service]" >>/etc/systemd/system/odoo.service && \
    echo "# Ubuntu/Debian convention:" >> /etc/systemd/system/odoo.service && \
    echo "Type=simple" >> /etc/systemd/system/odoo.service && \
    echo "User=odoo" >> /etc/systemd/system/odoo.service \
    echo "ExecStart=/opt/odoo/odoo-bin -c /etc/odoo.conf" >> /etc/systemd/system/odoo.service \
    echo "WantedBy==default.target" >> /etc/systemd/system/odoo.service

EXPOSE 8069


CMD service postgresql start && su - odoo -c "./odoo-bin -c /etc/odoo.conf"


When trying to run the container. Odoo throws throwing below error

PermissionError: [Errno 13] Permission denied: '/opt/s3_bucket/filestore/enterprise/8d'

EFS mount successfully. but after mounting it changed folder user permission to nobody

Note: I already created Access points with usersIDs

0

There are 0 answers