Last active
November 15, 2019 21:01
-
-
Save nacengineer/041ad2cbe0ec4771f2472a710d297c19 to your computer and use it in GitHub Desktop.
Typical Rails + Docker Desktop Setup
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
version: '3' | |
services: | |
db: | |
image: postgres:12-alpine | |
volumes: | |
- ./tmp/db:/var/lib/postgresql/data | |
- ./tmp/backups:/backups | |
# runs on localhost:30001 | |
pgadmin: | |
image: dpage/pgadmin4 | |
environment: | |
PGADMIN_DEFAULT_EMAIL: ${PGADMIN_DEFAULT_EMAIL:[email protected]} | |
PGADMIN_DEFAULT_PASSWORD: ${PGADMIN_DEFAULT_PASSWORD:-pass1234} | |
volumes: | |
- ./tmp/pgadmin:/root/.pgadmin | |
ports: | |
- "${PGADMIN_PORT:-30001}:80" | |
restart: unless-stopped | |
depends_on: | |
- db | |
redis: | |
image: redis | |
restart: unless-stopped | |
# runs on localhost:3000 | |
web: | |
# pass in your dotenv variables | |
env_file: | |
- .env.development | |
environment: | |
- REDIS_URL=redis://redis:6379/0 | |
build: . | |
command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'" | |
volumes: | |
# same as Dockerfile install location | |
- .:/my-awesome-application | |
ports: | |
- "3000:3000" | |
depends_on: | |
- db | |
- sidekiq | |
- redis | |
tty: true | |
stdin_open: true | |
restart: unless-stopped | |
sidekiq: | |
environment: | |
- REDIS_URL=redis://redis:6379/0 | |
build: . | |
volumes: | |
# same as Dockerfile install location | |
- .:/my-awesome-application | |
depends_on: | |
- redis | |
command: bundle exec sidekiq | |
restart: unless-stopped | |
# you can docker attach to this node and interact with your specs that are running via guard-rspec | |
guard: | |
build: . | |
volumes: | |
# same as Dockerfile install location | |
- .:/my-awesome-application | |
environment: | |
- RAILS_ENV=test | |
command: bundle exec guard --no-bundler-warning | |
# add this line for no prompt --no-interactions | |
tty: true | |
stdin_open: true | |
restart: unless-stopped |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
FROM ruby:2.5-alpine | |
RUN apk add --update \ | |
bash \ | |
build-base \ | |
nodejs \ | |
postgresql-dev \ | |
postgresql-client \ | |
libxml2-dev \ | |
libxslt-dev \ | |
tzdata \ | |
&& rm -rf /var/cache/apk/* | |
# Build variables you can override at runtime | |
ARG app_name=my-awesome-application | |
ARG port=3000 | |
# Map Build variables to Environment | |
ENV app_name $app_name | |
ENV port $port | |
RUN mkdir /$app_name | |
WORKDIR /$app_name | |
COPY Gemfile /$app_name/Gemfile | |
COPY Gemfile.lock /$app_name/Gemfile.lock | |
# optional if no nokogiri | |
# RUN bundle config build.nokogiri --use-system-libraries | |
RUN bundle install | |
COPY . /$app_name | |
# Add a script to be executed every time the container starts. | |
COPY entrypoint.sh /usr/bin/ | |
RUN chmod +x /usr/bin/entrypoint.sh | |
ENTRYPOINT ["entrypoint.sh"] | |
EXPOSE $port | |
# Start the main process. | |
CMD ["rails", "server", "-b", "0.0.0.0"] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Guard section assumes specs running via rspec-guard. You can eliminate if not needed. If used you can attach with
docker attach network-name_guard_1
<- network-name is usually = to your folder nameAnd detach without stopping the container with
CNTRL+p+q
Google docker commands for more informationAlso if you use binding.pry or binding.irb in your webapp code, you can attach similarly to your web application and interact with it.
Optional:
would be started with
docker-compose build
omit build if images are already madedocker-compose up -d
-d daemonizes the images