Dockerfile.dev 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. # Sentry dev environment
  2. #
  3. # NOTE: This should not be used in production!
  4. #
  5. # Instructions:
  6. #
  7. # Build the container:
  8. # $ docker build --rm -t sentry:dev -f Dockerfile.dev .
  9. # Bootstrap the container:
  10. # $ docker run --name=sentry-dev -p 8000:8000 -it -v $PWD:/usr/src/sentry sentry:dev
  11. # Run the container:
  12. # $ docker start sentry-dev
  13. # Attach into the container:
  14. # $ docker exec -it sentry-dev bash
  15. # Run devserver:
  16. # $ docker exec -it sentry-dev sentry devserver 0.0.0.0:8000
  17. # Stop container:
  18. # $ docker stop sentry-dev
  19. # Remove container:
  20. # $ docker rm -f sentry-dev
  21. #
  22. FROM python:2.7.11-slim
  23. RUN groupadd -r memcached --gid=997 && useradd -r -g memcached --uid=997 memcached \
  24. && groupadd -r redis --gid=998 && useradd -r -g redis --uid=998 redis \
  25. && groupadd -r postgres --gid=999 && useradd -r -g postgres --uid=999 postgres
  26. RUN apt-get update && apt-get install -y --no-install-recommends \
  27. clang \
  28. curl \
  29. g++ \
  30. gcc \
  31. git \
  32. libffi-dev \
  33. libjpeg-dev \
  34. libpq-dev \
  35. libxml2-dev \
  36. libxslt-dev \
  37. libyaml-dev \
  38. llvm-3.5 \
  39. # Extra dev tooling
  40. make \
  41. vim-nox \
  42. less \
  43. ntp \
  44. && rm -rf /var/lib/apt/lists/*
  45. # Sane defaults for pip
  46. ENV PIP_NO_CACHE_DIR off
  47. ENV PIP_DISABLE_PIP_VERSION_CHECK on
  48. ENV PYTHONUNBUFFERED 1
  49. # gpg keys listed at https://github.com/nodejs/node
  50. RUN set -ex \
  51. && for key in \
  52. 9554F04D7259F04124DE6B476D5A82AC7E37093B \
  53. 94AE36675C464D64BAFA68DD7434390BDBE9B9C5 \
  54. 0034A06D9D9B0064CE8ADF6BF1747F4AD2306D93 \
  55. FD3A5288F042B6850C66B31F09FE44734EB7990E \
  56. 71DCFD284A79C3B38668286BC97EC7A07EDE3FC1 \
  57. DD8F2338BAE7501E3DD5AC78C273792F7D83545D \
  58. B9AE9905FFD7803F25714661B63B535A4C206CA9 \
  59. C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8 \
  60. ; do \
  61. gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$key"; \
  62. done
  63. ENV NODE_VERSION 4.4.5
  64. RUN curl -SLO "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-x64.tar.gz" \
  65. && curl -SLO "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" \
  66. && gpg --verify SHASUMS256.txt.asc \
  67. && grep " node-v$NODE_VERSION-linux-x64.tar.gz\$" SHASUMS256.txt.asc | sha256sum -c - \
  68. && tar -xzf "node-v$NODE_VERSION-linux-x64.tar.gz" -C /usr/local --strip-components=1 \
  69. && rm "node-v$NODE_VERSION-linux-x64.tar.gz" SHASUMS256.txt.asc
  70. # make the "en_US.UTF-8" locale so postgres will be utf-8 enabled by default
  71. RUN apt-get update && apt-get install -y locales && rm -rf /var/lib/apt/lists/* \
  72. && localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8
  73. ENV LANG en_US.utf8
  74. RUN apt-key adv --keyserver ha.pool.sks-keyservers.net --recv-keys B97B0AFCAA1A47F044F244A07FCC7D46ACCC4CF8
  75. ENV PG_MAJOR 9.5
  76. ENV PG_VERSION 9.5.3-1.pgdg80+1
  77. ENV PATH /usr/lib/postgresql/$PG_MAJOR/bin:$PATH
  78. RUN echo 'deb http://apt.postgresql.org/pub/repos/apt/ jessie-pgdg main' $PG_MAJOR > /etc/apt/sources.list.d/pgdg.list \
  79. && apt-get update && apt-get install -y --no-install-recommends \
  80. postgresql-common \
  81. postgresql-$PG_MAJOR=$PG_VERSION \
  82. postgresql-client-$PG_MAJOR=$PG_VERSION \
  83. postgresql-contrib-$PG_MAJOR=$PG_VERSION \
  84. && rm -rf /var/lib/apt/lists/* \
  85. && rm "/etc/postgresql/$PG_MAJOR/main/pg_hba.conf" \
  86. && touch "/etc/postgresql/$PG_MAJOR/main/pg_hba.conf" \
  87. && chown -R postgres "/etc/postgresql/$PG_MAJOR/main/pg_hba.conf" \
  88. && { echo; echo "host all all 0.0.0.0/0 trust"; } >> "/etc/postgresql/$PG_MAJOR/main/pg_hba.conf" \
  89. && { echo; echo "local all all trust"; } >> "/etc/postgresql/$PG_MAJOR/main/pg_hba.conf"
  90. RUN service postgresql start \
  91. && createdb -U postgres -E utf-8 --template template0 sentry \
  92. && service postgresql stop
  93. ENV DEBIAN_FRONTEND=noninteractive
  94. RUN apt-get update && apt-get install -y --no-install-recommends \
  95. redis-server \
  96. memcached \
  97. postfix \
  98. && rm -rf /var/lib/apt/lists/*
  99. RUN mkdir -p /usr/src/sentry
  100. RUN mkdir -p /etc/sentry
  101. WORKDIR /usr/src/sentry
  102. ENV SENTRY_CONF /etc/sentry
  103. ENV C_FORCE_ROOT 1
  104. ADD scripts/docker-entrypoint.sh /entrypoint.sh
  105. ENTRYPOINT [ "/entrypoint.sh" ]
  106. EXPOSE 8000
  107. CMD [ "bash" ]