Wie kann ich die Docker-Umgebung mit einer App verwenden, die Nuxt und Rails verwendet? Als Referenz erkläre ich Schritt für Schritt die Dateien und Befehle bis zur Erstellung!
Dieses Mal möchte ich eine Anwendungsentwicklungsumgebung namens "Feeder" erstellen.
#Datei von Ihnen selbst vorbereitet
|-web/
| |--App-Ordner
| |--Dockerfile
|--back/
| |--App-Ordner
| |--Dockerfile
| |--Gemfile
| |--Gemfile.lock #Leere Akte
|--docker-compose.yml
|--.git
docker-compose.yml
version: "3"
services:
db:
container_name: database
image: mysql:5.7
command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
environment:
MYSQL_ROOT_PASSWORD: feeder
MYSQL_DATABASE: feeder
MYSQL_USER: feeder
MYSQL_PASSWORD: feeder
TZ: Asia/Tokyo
ports:
- 3308:3306
volumes:
- ./database/my.cnf:/etc/mysql/conf.d/my.cnf
- ./database/data:/var/lib/mysql
- ./database/sql:/docker-entrypoint-initdb.d
api:
container_name: back
tty: true
depends_on:
- db
build:
context: back/
dockerfile: Dockerfile
ports:
- 3000:3000
volumes:
- ./back/app:/app
command: rails server -b 0.0.0.0
front:
container_name: web
tty: true
build:
context: web/
dockerfile: Dockerfile
ports:
- 8080:3000
volumes:
- ./web/app:/app
command: sh -c 'yarn install; yarn dev'
FROM node:12.5.0-alpine
ENV LANG=C.UTF-8 \
TZ=Asia/Tokyo
WORKDIR /app
RUN apk update && \
apk upgrade && \
npm install -g npm && \
npm install -g @vue/cli && \
npm install -g create-nuxt-app
ENV HOST 0.0.0.0
EXPOSE 3000
FROM ruby:2.5
ENV LANG=C.UTF-8 \
TZ=Asia/Tokyo
WORKDIR /app
RUN apt-get update -qq && \
apt-get install -y nodejs default-mysql-client
COPY app/Gemfile /app/Gemfile
COPY app/Gemfile.lock /app/Gemfile.lock
RUN bundle install
Gemfile
source 'https://rubygems.org'
gem 'rails', '~> 6.0.3', '>= 6.0.3.2'
Bilderzeugung
$ docker-compose build
Generierung von Nuxt-Anwendungen
$ docker-compose run --rm web yarn create nuxt-app
Rails-Anwendungsgenerierung
$ docker-compose run --rm back rails new . -f -d mysql --api
database.yml
# MySQL. Versions 5.5.8 and up are supported.
#
# Install the MySQL driver
# gem install mysql2
#
# Ensure the MySQL gem is defined in your Gemfile
# gem 'mysql2'
#
# And be sure to use new-style password hashing:
# https://dev.mysql.com/doc/refman/5.7/en/password-hashing.html
#
default: &default
adapter: mysql2
charset: utf8mb4
encoding: utf8mb4
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: feeder
password: feeder
host: database
development:
<<: *default
database: feeder
# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
<<: *default
database: feeder
# As with config/credentials.yml, you never want to store sensitive information,
# like your database password, in your source code. If your source code is
# ever seen by anyone, they now have access to your database.
#
# Instead, provide the password as a unix environment variable when you boot
# the app. Read https://guides.rubyonrails.org/configuring.html#configuring-a-database
# for a full rundown on how to provide these environment variables in a
# production deployment.
#
# On Heroku and other platform providers, you may have a full connection URL
# available as an environment variable. For example:
#
# DATABASE_URL="mysql2://myuser:mypass@localhost/somedatabase"
#
# You can use this database configuration with:
#
# production:
# url: <%= ENV['DATABASE_URL'] %>
#
production:
<<: *default
database: feeder
username: feeder
password: <%= ENV['FEEDER_DATABASE_PASSWORD'] %>
Datenbank erstellen
$ docker-compose build
$ docker-compose run --rm back rails db:create
Starten Sie den Server (starten Sie den Container)
$ docker-compose up -d
$ docker-compose exec service name Befehlsskript zum Ausführen
$ docker-compose exec back sh
$ docker-compose exec web sh