Browse Source

Refactor webpack into its own docker service.

feature/python-error-tracking
Drew Larson 8 years ago
parent
commit
07220fd7d8
  1. 8
      Dockerfile
  2. 8
      Dockerfile-webpack
  3. 14
      bikeshop_project/bikeshop/settings/development.py
  4. 4
      bikeshop_project/webpack.dev.config.js
  5. 20
      docker-compose.dev.yml

8
Dockerfile

@ -1,16 +1,8 @@
FROM python:3.5 FROM python:3.5
RUN apt-get update
RUN apt-get install -y nodejs npm
RUN ln -s /usr/bin/nodejs /usr/bin/node
RUN mkdir /code RUN mkdir /code
WORKDIR /code WORKDIR /code
RUN mkdir requirements RUN mkdir requirements
ADD ./bikeshop_project /code ADD ./bikeshop_project /code
COPY ./requirements /code/requirements COPY ./requirements /code/requirements
RUN pip install -r ./requirements/development.txt RUN pip install -r ./requirements/development.txt
RUN npm install
RUN npm install -g bower
COPY ./bower.json .
RUN bower install --allow-root
EXPOSE 8000:8000 EXPOSE 8000:8000
EXPOSE 3000:3000

8
Dockerfile-webpack

@ -0,0 +1,8 @@
FROM node:7.3.0
RUN mkdir /code
WORKDIR /code
RUN npm install
RUN npm install -g bower
COPY ./bower.json .
RUN bower install --allow-root
EXPOSE 3000:3000

14
bikeshop_project/bikeshop/settings/development.py

@ -1,3 +1,4 @@
import sys
from .base import * from .base import *
@ -14,11 +15,14 @@ DATABASES = {
'ENGINE': 'django.db.backends.postgresql', 'ENGINE': 'django.db.backends.postgresql',
'NAME': 'postgres', 'NAME': 'postgres',
'USER': 'postgres', 'USER': 'postgres',
'HOST': 'db', 'HOST': 'workstand_db_1',
'PORT': '5432', 'PORT': '5432',
} }
} }
if 'test' in sys.argv or 'test_coverage' in sys.argv: #Covers regular testing and django-coverage
DATABASES['default']['ENGINE'] = 'django.db.backends.sqlite3'
LOGGING = { LOGGING = {
'version': 1, 'version': 1,
'disable_existing_loggers': False, 'disable_existing_loggers': False,
@ -45,9 +49,11 @@ LOGGING = {
}, },
} }
INSTALLED_APPS += [ # INSTALLED_APPS += [
'debug_toolbar' # 'debug_toolbar'
] # ]
# MIDDLEWARE_CLASSES += ['debug_toolbar.middleware.DebugToolbarMiddleware']
# Don't worry about IP addresses, just show the toolbar. # Don't worry about IP addresses, just show the toolbar.
DEBUG_TOOLBAR_CONFIG = { DEBUG_TOOLBAR_CONFIG = {

4
bikeshop_project/webpack.dev.config.js

@ -7,13 +7,13 @@ var config = require('./webpack.base.config.js')
// Use webpack dev server // Use webpack dev server
config.entry = [ config.entry = [
'webpack-dev-server/client?http://localhost:3000', 'webpack-dev-server/client?http://webpack.docker:3000',
'webpack/hot/only-dev-server', 'webpack/hot/only-dev-server',
'./assets/js/index' './assets/js/index'
] ]
// override django's STATIC_URL for webpack bundles // override django's STATIC_URL for webpack bundles
config.output.publicPath = 'http://localhost:3000/assets/bundles/' config.output.publicPath = 'http://webpack.docker:3000/assets/bundles/'
// Add HotModuleReplacementPlugin and BundleTracker plugins // Add HotModuleReplacementPlugin and BundleTracker plugins
config.plugins = config.plugins.concat([ config.plugins = config.plugins.concat([

20
docker-compose.dev.yml

@ -3,13 +3,29 @@ services:
workstand: workstand:
build: build:
context: . context: .
command: "bash -c 'npm run watch & python manage.py runserver 0.0.0.0:8000'" command: "bash -c 'python manage.py runserver 0.0.0.0:8000'"
ports: ports:
- "8000:8000" - "8000:8000"
- "3000:3000" depends_on:
- redis
- db
- webpack
links:
- redis
- db
volumes: volumes:
- ./bikeshop_project:/code - ./bikeshop_project:/code
redis: redis:
restart: always restart: always
db: db:
restart: always restart: always
webpack:
build:
context: .
dockerfile: Dockerfile-webpack
command: "npm run watch"
ports:
- "3000:3000"
restart: always
volumes:
- ./bikeshop_project:/code

Loading…
Cancel
Save