Update to a more usable Docker format

This commit is contained in:
Eric Schultz 2018-09-06 16:29:07 -05:00
parent 46d36ed88b
commit 2f86f07ba1
15 changed files with 121 additions and 46 deletions

View file

@ -3,4 +3,7 @@
!Gemfile.lock
!package.json
!package-lock.json
!script/debian_setup.sh
!script/build/debian/*.sh
!Rakefile
!config/*
!db/*

View file

@ -1,22 +0,0 @@
FROM ruby:2.3
ARG USER
RUN mkdir /myapp
COPY Gemfile /myapp/Gemfile
COPY Gemfile.lock /myapp/Gemfile.lock
COPY package.json /myapp/package.json
COPY package-lock.json /myapp/package-lock.json
COPY script/debian_setup.sh /myapp/script/debian_setup.sh
WORKDIR /myapp
RUN script/debian_setup.sh
RUN groupadd -r -g 1000 $USER
RUN useradd -r -m -g $USER -u 1000 $USER
RUN chown -R $USER /usr/local/bundle
RUN chgrp -R $USER /usr/local/bundle
RUN chown -R $USER /myapp
RUN chgrp -R $USER /myapp
RUN chown -R $USER /usr/lib/node_modules
RUN chgrp -R $USER /usr/lib/node_modules
USER $USER
RUN bundle install
EXPOSE 5000
CMD foreman start

View file

@ -56,6 +56,7 @@ You will likely need to logout and log back in again.
#### Build your docker-container and start it up for initial set up.
We'll keep this running in the console we'll call **console 1**
```
cd docker/debug
docker-compose build
docker-compose up
```

View file

@ -5,7 +5,7 @@ require 'rails/all'
Bundler.require *Rails.groups(:assets) if defined?(Bundler)
require File.expand_path('lib/htp') # Hamster Table Print
#require File.expand_path('lib/htp') # Hamster Table Print
module Commitchange
class Application < Rails::Application

View file

@ -3,7 +3,7 @@
--
-- Dumped from database version 9.6.5
-- Dumped by pg_dump version 9.6.9
-- Dumped by pg_dump version 9.6.10
SET statement_timeout = 0;
SET lock_timeout = 0;

16
docker/build/Dockerfile Normal file
View file

@ -0,0 +1,16 @@
FROM ruby:2.3.7-stretch
ARG USER
RUN mkdir /myapp
COPY script/build/debian/prebuild.sh myapp/script/build/debian/prebuild.sh
RUN myapp/script/build/debian/prebuild.sh
COPY script/build/debian/node.sh myapp/script/build/debian/node.sh
RUN myapp/script/build/debian/node.sh
COPY script/build/debian/postgres.sh myapp/script/build/debian/postgres.sh
RUN myapp/script/build/debian/postgres.sh
COPY script/build/debian/java.sh myapp/script/build/debian/java.sh
RUN myapp/script/build/debian/java.sh
WORKDIR /myapp
COPY Gemfile /myapp/Gemfile
COPY Gemfile.lock /myapp/Gemfile.lock
RUN bundle install
CMD rake db:create db:structure:load test:prepare && rake spec && npx jest && npm run build-all

View file

@ -0,0 +1,23 @@
# License: CC0-1.0
version: '2'
services:
build:
build:
context: ../..
dockerfile: docker/build/Dockerfile
depends_on:
- db
- memcached
environment:
- DATABASE_HOST=db
- MEMCACHE_SERVERS=memcached
volumes:
- ../../:/myapp
db:
image: postgres:9.6
environment:
POSTGRES_USER: "admin"
POSTGRES_PASSWORD: "password"
memcached:
image: memcached

28
docker/debug/Dockerfile Normal file
View file

@ -0,0 +1,28 @@
FROM ruby:2.3.7-stretch
ARG USER
RUN mkdir /myapp
COPY script/build/debian/prebuild.sh myapp/script/build/debian/prebuild.sh
RUN myapp/script/build/debian/prebuild.sh
COPY script/build/debian/node.sh myapp/script/build/debian/node.sh
RUN myapp/script/build/debian/node.sh
COPY script/build/debian/postgres.sh myapp/script/build/debian/postgres.sh
RUN myapp/script/build/debian/postgres.sh
COPY script/build/debian/java.sh myapp/script/build/debian/java.sh
RUN myapp/script/build/debian/java.sh
WORKDIR /myapp
RUN groupadd -r -g 1000 $USER
RUN useradd -r -m -g $USER -u 1000 $USER
RUN chown -R $USER /usr/local/bundle
RUN chgrp -R $USER /usr/local/bundle
RUN chown -R $USER /myapp
RUN chgrp -R $USER /myapp
RUN chown -R $USER /usr/lib/node_modules
RUN chgrp -R $USER /usr/lib/node_modules
COPY Gemfile /myapp/Gemfile
COPY Gemfile.lock /myapp/Gemfile.lock
RUN bundle install
RUN chown -R $USER /myapp/Gemfile
RUN chgrp -R $USER /myapp/Gemfile.lock
USER $USER
EXPOSE 5000
CMD foreman start

View file

@ -1,29 +1,37 @@
# License: CC0-1.0
version: '2'
services:
web:
build:
context: ../..
dockerfile: docker/debug/Dockerfile
args:
- USER
user: ${USER}
environment:
- DATABASE_HOST=db
- MEMCACHE_SERVERS=memcached
- USER=${USER}
volumes:
- ../../:/myapp
ports:
- "5000:5000"
depends_on:
- db
- memcached
db:
image: postgres:9.6
environment:
POSTGRES_USER: "admin"
POSTGRES_PASSWORD: "password"
volumes:
- ./postgres-data:/var/lib/postgresql/data
web:
build:
context: .
args:
- USER
volumes:
- .:/myapp
ports:
- "5000:5000"
depends_on:
- db
- memcached
user: ${USER}
environment:
- USER=${USER}
- DATABASE_HOST=db
- MEMCACHE_SERVERS=memcached
memcached:
image: memcached

2
run
View file

@ -1,2 +1,2 @@
#!/usr/bin/env bash
docker-compose run web $@
docker-compose -f docker/debug/docker-compose.yml run web $@

4
script/build/debian/java.sh Executable file
View file

@ -0,0 +1,4 @@
#!/usr/bin/env bash
set -e
apt-get -yy install default-jre

6
script/build/debian/node.sh Executable file
View file

@ -0,0 +1,6 @@
#!/usr/bin/env bash
set -e
curl -sL https://deb.nodesource.com/setup_9.x | bash -
apt-get update -qq && apt-get install -y nodejs
npm install npm@^6 -g

View file

@ -0,0 +1,4 @@
#!/usr/bin/env bash
set -e
apt-get -yy install libpq5=9.6.10-0+deb9u1 libpq-dev=9.6.10-0+deb9u1 postgresql=9.6+181+deb9u1

View file

@ -0,0 +1,4 @@
#!/usr/bin/env bash
set -e
apt-get update -qq && apt-get install -y build-essential

View file

@ -2,7 +2,7 @@
set -e
curl -sL https://deb.nodesource.com/setup_9.x | bash -
echo 'deb http://apt.postgresql.org/pub/repos/apt/ jessie-pgdg main' > /etc/apt/sources.list.d/pgdg.list
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add -
apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs postgresql-9.6 default-jre
npm install npm@^6 -g