Dockerfile 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. # Copyright 2016-TODAY LasLabs Inc.
  2. # License MIT (https://opensource.org/licenses/MIT).
  3. FROM alpine:3.4
  4. MAINTAINER "LasLabs Inc." <support@laslabs.com>
  5. ENV ODOO_VERSION="${ODOO_VERSION:-10.0}"
  6. ENV ODOO_REPO="${ODOO_REPO:-odoo/odoo}"
  7. ENV ODOO_CONFIG_DIR="${ODOO_CONFIG_DIR:-/etc/odoo}"
  8. ENV ODOO_CONFIG="${ODOO_CONFIG_DIR}/${ODOO_CONFIG_FILE:-odoo.conf}"
  9. ENV WKHTMLTOX_VERSION="${WKHTMLTOX_VERSION:-0.12}"
  10. ENV WKHTMLTOX_RELEASE="${WKHTMLTOX_VERSION}.${WKHTMLTOX_SUBVERSION:-4}"
  11. ENV WKHTMLTOX_URI="http://download.gna.org/wkhtmltopdf/${WKHTMLTOX_VERSION}/${WKHTMLTOX_RELEASE}/wkhtmltox-${WKHTMLTOX_RELEASE}_linux-generic-amd64.tar.xz"
  12. ENV ODOO_URI="https://github.com/$ODOO_REPO/archive/${ODOO_BRANCH:-$ODOO_VERSION}.tar.gz"
  13. ENV MQT_URI="https://github.com/OCA/maintainer-quality-tools/archive/master.tar.gz"
  14. # Odoo Binary Dependencies
  15. RUN set -x; \
  16. apk add --no-cache \
  17. alpine-sdk \
  18. bash \
  19. build-base \
  20. curl \
  21. ca-certificates \
  22. freetype \
  23. fontconfig \
  24. git \
  25. jpeg \
  26. jpeg-dev \
  27. libffi \
  28. libffi-dev \
  29. libxml2 \
  30. libxml2-dev \
  31. libxslt \
  32. libxslt-dev \
  33. linux-headers \
  34. nodejs \
  35. openldap-dev \
  36. openssl-dev \
  37. postgresql \
  38. postgresql-client \
  39. postgresql-dev \
  40. python \
  41. python-dev \
  42. tar \
  43. xvfb \
  44. xz \
  45. zlib-dev
  46. # Install Pip
  47. RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python
  48. # Wkhtmltox Headless Using XVFB
  49. RUN curl -sL $WKHTMLTOX_URI \
  50. | tar -xJ \
  51. && mkdir /opt \
  52. && cp wkhtmltox/bin/* /opt/ \
  53. && rm -Rf wkhtmltox* \
  54. && echo -e '#!/bin/bash\nxvfb-run -a --server-args="-screen 0, 1024x768x24" /opt/wkhtmltopdf -q $*' > /usr/bin/wkhtmltopdf \
  55. && echo -e '#!/bin/bash\nxvfb-run -a --server-args="-screen 0, 1024x768x24" /opt/wkhtmltoimage -q $*' > /usr/bin/wkhtmltoimage \
  56. && chmod a+x /usr/bin/wkhtmltopdf \
  57. && chmod a+x /usr/bin/wkhtmltoimage
  58. # Install NPM depends
  59. RUN npm install -g clean-css \
  60. less
  61. # Install Odoo
  62. RUN adduser -S odoo
  63. RUN mkdir -p /tmp/odoo \
  64. && mkdir -p /opt/odoo \
  65. && curl -sL $ODOO_URI \
  66. | tar xz -C /tmp/odoo --strip 1 \
  67. && cd /tmp/odoo \
  68. && pip install --no-cache-dir -r ./requirements.txt \
  69. && pip install --no-cache-dir . \
  70. && mv ./addons /opt/odoo \
  71. && chown -R odoo /opt/odoo
  72. RUN mkdir -p /etc/odoo \
  73. /mnt/addons \
  74. /opt/addons \
  75. /opt/community \
  76. /var/lib/odoo \
  77. && chown odoo -R /etc/odoo \
  78. /mnt/addons \
  79. /opt/addons \
  80. /opt/community \
  81. /var/lib/odoo
  82. # Copy Entrypoint & Odoo conf
  83. COPY ./docker-entrypoint.sh /entrypoint.sh
  84. COPY ./etc/odoo-server.conf $ODOO_CONFIG
  85. RUN chown odoo /entrypoint.sh \
  86. && chmod +x /entrypoint.sh \
  87. && chown odoo -R $ODOO_CONFIG_DIR
  88. # OCA Repos
  89. RUN curl -sL $MQT_URI \
  90. | tar -xz -C /opt/ \
  91. && ln -s /opt/maintainer-quality-tools-master/travis/clone_oca_dependencies /usr/bin \
  92. && ln -s /opt/maintainer-quality-tools-master/travis/getaddons.py /usr/bin/get_addons \
  93. && chmod +x /usr/bin/get_addons
  94. # Remove unneeded build dependencies
  95. RUN rm -Rf /tmp/odoo \
  96. && cp /usr/bin/pg_dump /tmp \
  97. && cp /usr/bin/pg_restore /tmp \
  98. && apk del curl \
  99. linux-headers \
  100. postgresql \
  101. && mv /tmp/pg_dump /usr/bin/pg_dump \
  102. && mv /tmp/pg_restore /usr/bin/pg_restore
  103. # Mount Volumes
  104. VOLUME ["/var/lib/odoo", \
  105. "/mnt/addons", \
  106. ]
  107. # Expose Odoo services
  108. EXPOSE 8069 8071
  109. # Set default user when running the container
  110. # USER odoo
  111. # Entrypoint & Cmd
  112. ENTRYPOINT ["/entrypoint.sh"]
  113. CMD ["odoo"]