Docker&Rails6 환경을 구축하십시오.
12458 단어 Docker
본 보도에 관하여 (사절)
이 글은 지루한 프로그래밍 초보자들이 프로그래밍 기술을 배우고 접하기 위해 갔던 비망록으로 쓴 것이다.양해해 주십시오.
나는 기꺼이 당신의 지적을 받아들일 것입니다🙇♂️
목표
우리의 목표는 먼저 필요한 파일을 준비한 다음 Rails 응용 프로그램을 시작하는 것입니다.
참고 자료
이번 작업은 아래의 보도를 참고하였다.많이 배웠어요.정말 감사합니다.
Quickstart: Compose and Rails | Docker Documentation
https://qiita.com/kodai_0122/items/795438d738386c2c1966#2-2-bundle-install
https://qiita.com/at-946/items/2fb75cec5355fad4050d
환경 생성 단계
1. 준비
1-1 폴더 만들기
우선, 작업을 위한 폴더를 임의로 만듭니다.
만든 폴더로 이동합니다.$ mkdir myapp
$ cd my app
1-2 Dockerfile 만들기
폴더에 Dockerfile을 만듭니다.
공식 홈페이지 내: 참고빠른 시작 버전만 변경하여 제작합니다.
DockerfileFROM ruby:2.6.5
RUN apt-get update -qq && apt-get install -y nodejs postgresql-client
RUN mkdir /myapp
WORKDIR /myapp
COPY Gemfile /myapp/Gemfile
COPY Gemfile.lock /myapp/Gemfile.lock
RUN bundle install
COPY . /myapp
# 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 3000
# Start the main process.
CMD ["rails", "server", "-b", "0.0.0.0"]
1-3 Gemfile 만들기
설치할 Rails 버전을 6으로 지정합니다.Gemfile.lock도 만들어야 합니다.안에 아무것도 안 써도 돼요.
Gemfilesource 'https://rubygems.org'
gem 'rails', '~> 6'
$ touch Gemfile.lock
1-4entrypoint.sh 만들기
컨테이너가 시작되면 Rails의 서버입니다.매번 pid를 삭제하는 것 같습니다.(영어를 잘 못해서 쓴 게 다르면 미안해요) 이 파일을 자주 남겨두고 컨테이너에 있던 걸 지우느라 힘들었던 기억이 있어요.
entrypoint.sh#!/bin/bash
set -e
# Remove a potentially pre-existing server.pid for Rails.
rm -f /myapp/tmp/pids/server.pid
# Then exec the container's main process (what's set as CMD in the Dockerfile).
exec "$@"
1-5docker-compose.yml 만들기
docker-compose.yml은 마법 같은 파일입니다.필요한 응용 프로그램 (웹,db 응용 프로그램) 을 구성하는 서비스와 인상을 종합하여 실행합니다.(영어를 잘 못하는 n이 스스로 이 파일의 느낌으로 말하는 부분도 있는데 오해를 불러일으키는 표현이 있으면 죄송합니다)
docker-compose.ymlversion: '3'
services:
db:
image: postgres
volumes:
- ./tmp/db:/var/lib/postgresql/data
environment:
POSTGRES_PASSWORD: password
web:
build: .
command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'"
volumes:
- .:/myapp
ports:
- "3000:3000"
depends_on:
- db
여기서 DB(PostgreSQL), 웹 두 개를 수행합니다.
여기까지 서류 준비가 끝났다.
2. 프로젝트 구축
2-1rails newdocker-compose run
명령을 사용합니다.$ docker-compose run web rails new . --force --no-deps --database=postgresql --skip-bundle
이로써 myapp 폴더에는 익숙한 폴더 구성이 생겼다.
종착역의 마지막에 다음과 같이 메시지를 보냅니다.Could not find gem 'pg (>= 0.18, < 2.0)' in any of the gem sources listed in your Gemfile.
Run `bundle install` to install missing gems.
rails new
이런 정보입니다.
2-2bundle install
Dockerfile에 기술되어 있기 때문에bundle install
이미지를 구축할 때 마음대로 할 수 있습니다.$ docker-compose build
2-3 DB 접속 설정
Rails의 confg/databaseyml을 (으)로 변경합니다.
config/database.ymldefault: &default
adapter: postgresql
encoding: unicode
host: db
username: postgres
password:
pool: 5
development:
<<: *default
database: myapp_development
test:
<<: *default
database: myapp_test
.
.
.
2-4 Docker 컨테이너 시작$ docker-compose up
그리고 자꾸 잘못이 많다고 생각해요.db_1 | Error: Database is uninitialized and superuser password is not specified.
.
.
.
web_1 | /usr/local/bundle/gems/webpacker-4.2.2/lib/webpacker/configuration.rb:95:in `rescue in load': Webpacker configuration file not found /myapp/config/webpacker.yml. Please run rails webpacker:install Error: No such file or directory @ rb_sysopen - /myapp/config/webpacker.yml (RuntimeError)
위의 오류는 PostgreSQL 암호가 필요하기 때문에 발생한 메시지입니다.bundle install
에서 추서하다.
config/database.ymldefault: &default
adapter: postgresql
encoding: unicode
host: db
username: postgres
password: password # <= この部分
pool: 5
또 다른 오류는 기본적으로 Webpacker가 Rails6에서 왔기 때문에 Webpacker를 설치해야 한다는 것입니다.
그러면 이 Webpacker 설치에는 yarn 또는 Node가 필요합니다.js를 설치해야 한다고 들었어요.
이에 대응하려면 Dockerfile을 편집해야 합니다.
DockerfileFROM ruby:2.6.5
RUN apt-get update -qq && apt-get install -y nodejs postgresql-client
# yarnインストール
RUN apt-get update && apt-get install -y curl apt-transport-https wget
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \
echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list
RUN apt-get update && apt-get install -y yarn
# Node.jsインストール
RUN curl -sL https://deb.nodesource.com/setup_7.x | bash - && \
apt-get install nodejs
RUN mkdir /myapp
WORKDIR /myapp
COPY Gemfile /myapp/Gemfile
COPY Gemfile.lock /myapp/Gemfile.lock
RUN bundle install
COPY . /myapp
# 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 3000
# Start the main process.
CMD ["rails", "server", "-b", "0.0.0.0"]
그럼 Webpacker를 설치해 보세요.$ docker-compose stop
$ docker-compose down
$ docker-compose run web bundle exec rails webpacker:install
.
.
Webpacker successfully installed 🎉 🍰
Webpacker가 설치되었습니다.
용기를 다시 시작하다.$ docker-compose up
2-5 데이터베이스 생성
데이터베이스를 만듭니다.이게 완성이야.$ docker-compose run web rails db:create
Starting myapp_db_1 ... done
Created database 'myapp_development'
Created database 'myapp_test'
2-6 액세스 시도
브라우저에서 액세스를 시도합니다http://localhost:3000/.모두가 익숙한 화면이 나를 맞이하여 순조롭게 성공했다!
Yay!
총결산
Docker에서 Rails6 환경을 생성하려고 시도했습니다.
실제로 작업할 때 작업 폴더의 이름은 Dockerfile에서 지정한 폴더 이름과 다르고 다른 것도 까다롭다.다른 분들에게 도움이 됐으면 좋겠어요.
Reference
이 문제에 관하여(Docker&Rails6 환경을 구축하십시오.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Dyoko_/items/1fd61dcb6099bf7d9f97
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
우리의 목표는 먼저 필요한 파일을 준비한 다음 Rails 응용 프로그램을 시작하는 것입니다.
참고 자료
이번 작업은 아래의 보도를 참고하였다.많이 배웠어요.정말 감사합니다.
Quickstart: Compose and Rails | Docker Documentation
https://qiita.com/kodai_0122/items/795438d738386c2c1966#2-2-bundle-install
https://qiita.com/at-946/items/2fb75cec5355fad4050d
환경 생성 단계
1. 준비
1-1 폴더 만들기
우선, 작업을 위한 폴더를 임의로 만듭니다.
만든 폴더로 이동합니다.$ mkdir myapp
$ cd my app
1-2 Dockerfile 만들기
폴더에 Dockerfile을 만듭니다.
공식 홈페이지 내: 참고빠른 시작 버전만 변경하여 제작합니다.
DockerfileFROM ruby:2.6.5
RUN apt-get update -qq && apt-get install -y nodejs postgresql-client
RUN mkdir /myapp
WORKDIR /myapp
COPY Gemfile /myapp/Gemfile
COPY Gemfile.lock /myapp/Gemfile.lock
RUN bundle install
COPY . /myapp
# 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 3000
# Start the main process.
CMD ["rails", "server", "-b", "0.0.0.0"]
1-3 Gemfile 만들기
설치할 Rails 버전을 6으로 지정합니다.Gemfile.lock도 만들어야 합니다.안에 아무것도 안 써도 돼요.
Gemfilesource 'https://rubygems.org'
gem 'rails', '~> 6'
$ touch Gemfile.lock
1-4entrypoint.sh 만들기
컨테이너가 시작되면 Rails의 서버입니다.매번 pid를 삭제하는 것 같습니다.(영어를 잘 못해서 쓴 게 다르면 미안해요) 이 파일을 자주 남겨두고 컨테이너에 있던 걸 지우느라 힘들었던 기억이 있어요.
entrypoint.sh#!/bin/bash
set -e
# Remove a potentially pre-existing server.pid for Rails.
rm -f /myapp/tmp/pids/server.pid
# Then exec the container's main process (what's set as CMD in the Dockerfile).
exec "$@"
1-5docker-compose.yml 만들기
docker-compose.yml은 마법 같은 파일입니다.필요한 응용 프로그램 (웹,db 응용 프로그램) 을 구성하는 서비스와 인상을 종합하여 실행합니다.(영어를 잘 못하는 n이 스스로 이 파일의 느낌으로 말하는 부분도 있는데 오해를 불러일으키는 표현이 있으면 죄송합니다)
docker-compose.ymlversion: '3'
services:
db:
image: postgres
volumes:
- ./tmp/db:/var/lib/postgresql/data
environment:
POSTGRES_PASSWORD: password
web:
build: .
command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'"
volumes:
- .:/myapp
ports:
- "3000:3000"
depends_on:
- db
여기서 DB(PostgreSQL), 웹 두 개를 수행합니다.
여기까지 서류 준비가 끝났다.
2. 프로젝트 구축
2-1rails newdocker-compose run
명령을 사용합니다.$ docker-compose run web rails new . --force --no-deps --database=postgresql --skip-bundle
이로써 myapp 폴더에는 익숙한 폴더 구성이 생겼다.
종착역의 마지막에 다음과 같이 메시지를 보냅니다.Could not find gem 'pg (>= 0.18, < 2.0)' in any of the gem sources listed in your Gemfile.
Run `bundle install` to install missing gems.
rails new
이런 정보입니다.
2-2bundle install
Dockerfile에 기술되어 있기 때문에bundle install
이미지를 구축할 때 마음대로 할 수 있습니다.$ docker-compose build
2-3 DB 접속 설정
Rails의 confg/databaseyml을 (으)로 변경합니다.
config/database.ymldefault: &default
adapter: postgresql
encoding: unicode
host: db
username: postgres
password:
pool: 5
development:
<<: *default
database: myapp_development
test:
<<: *default
database: myapp_test
.
.
.
2-4 Docker 컨테이너 시작$ docker-compose up
그리고 자꾸 잘못이 많다고 생각해요.db_1 | Error: Database is uninitialized and superuser password is not specified.
.
.
.
web_1 | /usr/local/bundle/gems/webpacker-4.2.2/lib/webpacker/configuration.rb:95:in `rescue in load': Webpacker configuration file not found /myapp/config/webpacker.yml. Please run rails webpacker:install Error: No such file or directory @ rb_sysopen - /myapp/config/webpacker.yml (RuntimeError)
위의 오류는 PostgreSQL 암호가 필요하기 때문에 발생한 메시지입니다.bundle install
에서 추서하다.
config/database.ymldefault: &default
adapter: postgresql
encoding: unicode
host: db
username: postgres
password: password # <= この部分
pool: 5
또 다른 오류는 기본적으로 Webpacker가 Rails6에서 왔기 때문에 Webpacker를 설치해야 한다는 것입니다.
그러면 이 Webpacker 설치에는 yarn 또는 Node가 필요합니다.js를 설치해야 한다고 들었어요.
이에 대응하려면 Dockerfile을 편집해야 합니다.
DockerfileFROM ruby:2.6.5
RUN apt-get update -qq && apt-get install -y nodejs postgresql-client
# yarnインストール
RUN apt-get update && apt-get install -y curl apt-transport-https wget
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \
echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list
RUN apt-get update && apt-get install -y yarn
# Node.jsインストール
RUN curl -sL https://deb.nodesource.com/setup_7.x | bash - && \
apt-get install nodejs
RUN mkdir /myapp
WORKDIR /myapp
COPY Gemfile /myapp/Gemfile
COPY Gemfile.lock /myapp/Gemfile.lock
RUN bundle install
COPY . /myapp
# 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 3000
# Start the main process.
CMD ["rails", "server", "-b", "0.0.0.0"]
그럼 Webpacker를 설치해 보세요.$ docker-compose stop
$ docker-compose down
$ docker-compose run web bundle exec rails webpacker:install
.
.
Webpacker successfully installed 🎉 🍰
Webpacker가 설치되었습니다.
용기를 다시 시작하다.$ docker-compose up
2-5 데이터베이스 생성
데이터베이스를 만듭니다.이게 완성이야.$ docker-compose run web rails db:create
Starting myapp_db_1 ... done
Created database 'myapp_development'
Created database 'myapp_test'
2-6 액세스 시도
브라우저에서 액세스를 시도합니다http://localhost:3000/.모두가 익숙한 화면이 나를 맞이하여 순조롭게 성공했다!
Yay!
총결산
Docker에서 Rails6 환경을 생성하려고 시도했습니다.
실제로 작업할 때 작업 폴더의 이름은 Dockerfile에서 지정한 폴더 이름과 다르고 다른 것도 까다롭다.다른 분들에게 도움이 됐으면 좋겠어요.
Reference
이 문제에 관하여(Docker&Rails6 환경을 구축하십시오.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Dyoko_/items/1fd61dcb6099bf7d9f97
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
1. 준비
1-1 폴더 만들기
우선, 작업을 위한 폴더를 임의로 만듭니다.
만든 폴더로 이동합니다.$ mkdir myapp
$ cd my app
1-2 Dockerfile 만들기
폴더에 Dockerfile을 만듭니다.
공식 홈페이지 내: 참고빠른 시작 버전만 변경하여 제작합니다.
DockerfileFROM ruby:2.6.5
RUN apt-get update -qq && apt-get install -y nodejs postgresql-client
RUN mkdir /myapp
WORKDIR /myapp
COPY Gemfile /myapp/Gemfile
COPY Gemfile.lock /myapp/Gemfile.lock
RUN bundle install
COPY . /myapp
# 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 3000
# Start the main process.
CMD ["rails", "server", "-b", "0.0.0.0"]
1-3 Gemfile 만들기
설치할 Rails 버전을 6으로 지정합니다.Gemfile.lock도 만들어야 합니다.안에 아무것도 안 써도 돼요.
Gemfilesource 'https://rubygems.org'
gem 'rails', '~> 6'
$ touch Gemfile.lock
1-4entrypoint.sh 만들기
컨테이너가 시작되면 Rails의 서버입니다.매번 pid를 삭제하는 것 같습니다.(영어를 잘 못해서 쓴 게 다르면 미안해요) 이 파일을 자주 남겨두고 컨테이너에 있던 걸 지우느라 힘들었던 기억이 있어요.
entrypoint.sh#!/bin/bash
set -e
# Remove a potentially pre-existing server.pid for Rails.
rm -f /myapp/tmp/pids/server.pid
# Then exec the container's main process (what's set as CMD in the Dockerfile).
exec "$@"
1-5docker-compose.yml 만들기
docker-compose.yml은 마법 같은 파일입니다.필요한 응용 프로그램 (웹,db 응용 프로그램) 을 구성하는 서비스와 인상을 종합하여 실행합니다.(영어를 잘 못하는 n이 스스로 이 파일의 느낌으로 말하는 부분도 있는데 오해를 불러일으키는 표현이 있으면 죄송합니다)
docker-compose.ymlversion: '3'
services:
db:
image: postgres
volumes:
- ./tmp/db:/var/lib/postgresql/data
environment:
POSTGRES_PASSWORD: password
web:
build: .
command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'"
volumes:
- .:/myapp
ports:
- "3000:3000"
depends_on:
- db
여기서 DB(PostgreSQL), 웹 두 개를 수행합니다.
여기까지 서류 준비가 끝났다.
2. 프로젝트 구축
2-1rails newdocker-compose run
명령을 사용합니다.$ docker-compose run web rails new . --force --no-deps --database=postgresql --skip-bundle
이로써 myapp 폴더에는 익숙한 폴더 구성이 생겼다.
종착역의 마지막에 다음과 같이 메시지를 보냅니다.Could not find gem 'pg (>= 0.18, < 2.0)' in any of the gem sources listed in your Gemfile.
Run `bundle install` to install missing gems.
rails new
이런 정보입니다.
2-2bundle install
Dockerfile에 기술되어 있기 때문에bundle install
이미지를 구축할 때 마음대로 할 수 있습니다.$ docker-compose build
2-3 DB 접속 설정
Rails의 confg/databaseyml을 (으)로 변경합니다.
config/database.ymldefault: &default
adapter: postgresql
encoding: unicode
host: db
username: postgres
password:
pool: 5
development:
<<: *default
database: myapp_development
test:
<<: *default
database: myapp_test
.
.
.
2-4 Docker 컨테이너 시작$ docker-compose up
그리고 자꾸 잘못이 많다고 생각해요.db_1 | Error: Database is uninitialized and superuser password is not specified.
.
.
.
web_1 | /usr/local/bundle/gems/webpacker-4.2.2/lib/webpacker/configuration.rb:95:in `rescue in load': Webpacker configuration file not found /myapp/config/webpacker.yml. Please run rails webpacker:install Error: No such file or directory @ rb_sysopen - /myapp/config/webpacker.yml (RuntimeError)
위의 오류는 PostgreSQL 암호가 필요하기 때문에 발생한 메시지입니다.bundle install
에서 추서하다.
config/database.ymldefault: &default
adapter: postgresql
encoding: unicode
host: db
username: postgres
password: password # <= この部分
pool: 5
또 다른 오류는 기본적으로 Webpacker가 Rails6에서 왔기 때문에 Webpacker를 설치해야 한다는 것입니다.
그러면 이 Webpacker 설치에는 yarn 또는 Node가 필요합니다.js를 설치해야 한다고 들었어요.
이에 대응하려면 Dockerfile을 편집해야 합니다.
DockerfileFROM ruby:2.6.5
RUN apt-get update -qq && apt-get install -y nodejs postgresql-client
# yarnインストール
RUN apt-get update && apt-get install -y curl apt-transport-https wget
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \
echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list
RUN apt-get update && apt-get install -y yarn
# Node.jsインストール
RUN curl -sL https://deb.nodesource.com/setup_7.x | bash - && \
apt-get install nodejs
RUN mkdir /myapp
WORKDIR /myapp
COPY Gemfile /myapp/Gemfile
COPY Gemfile.lock /myapp/Gemfile.lock
RUN bundle install
COPY . /myapp
# 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 3000
# Start the main process.
CMD ["rails", "server", "-b", "0.0.0.0"]
그럼 Webpacker를 설치해 보세요.$ docker-compose stop
$ docker-compose down
$ docker-compose run web bundle exec rails webpacker:install
.
.
Webpacker successfully installed 🎉 🍰
Webpacker가 설치되었습니다.
용기를 다시 시작하다.$ docker-compose up
2-5 데이터베이스 생성
데이터베이스를 만듭니다.이게 완성이야.$ docker-compose run web rails db:create
Starting myapp_db_1 ... done
Created database 'myapp_development'
Created database 'myapp_test'
2-6 액세스 시도
브라우저에서 액세스를 시도합니다http://localhost:3000/.모두가 익숙한 화면이 나를 맞이하여 순조롭게 성공했다!
Yay!
총결산
Docker에서 Rails6 환경을 생성하려고 시도했습니다.
실제로 작업할 때 작업 폴더의 이름은 Dockerfile에서 지정한 폴더 이름과 다르고 다른 것도 까다롭다.다른 분들에게 도움이 됐으면 좋겠어요.
Reference
이 문제에 관하여(Docker&Rails6 환경을 구축하십시오.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Dyoko_/items/1fd61dcb6099bf7d9f97
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$ mkdir myapp
$ cd my app
FROM ruby:2.6.5
RUN apt-get update -qq && apt-get install -y nodejs postgresql-client
RUN mkdir /myapp
WORKDIR /myapp
COPY Gemfile /myapp/Gemfile
COPY Gemfile.lock /myapp/Gemfile.lock
RUN bundle install
COPY . /myapp
# 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 3000
# Start the main process.
CMD ["rails", "server", "-b", "0.0.0.0"]
source 'https://rubygems.org'
gem 'rails', '~> 6'
$ touch Gemfile.lock
#!/bin/bash
set -e
# Remove a potentially pre-existing server.pid for Rails.
rm -f /myapp/tmp/pids/server.pid
# Then exec the container's main process (what's set as CMD in the Dockerfile).
exec "$@"
version: '3'
services:
db:
image: postgres
volumes:
- ./tmp/db:/var/lib/postgresql/data
environment:
POSTGRES_PASSWORD: password
web:
build: .
command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'"
volumes:
- .:/myapp
ports:
- "3000:3000"
depends_on:
- db
2-1rails new
docker-compose run
명령을 사용합니다.$ docker-compose run web rails new . --force --no-deps --database=postgresql --skip-bundle
이로써 myapp 폴더에는 익숙한 폴더 구성이 생겼다.종착역의 마지막에 다음과 같이 메시지를 보냅니다.
Could not find gem 'pg (>= 0.18, < 2.0)' in any of the gem sources listed in your Gemfile.
Run `bundle install` to install missing gems.
rails new
이런 정보입니다.2-2bundle install
Dockerfile에 기술되어 있기 때문에
bundle install
이미지를 구축할 때 마음대로 할 수 있습니다.$ docker-compose build
2-3 DB 접속 설정Rails의 confg/databaseyml을 (으)로 변경합니다.
config/database.yml
default: &default
adapter: postgresql
encoding: unicode
host: db
username: postgres
password:
pool: 5
development:
<<: *default
database: myapp_development
test:
<<: *default
database: myapp_test
.
.
.
2-4 Docker 컨테이너 시작$ docker-compose up
그리고 자꾸 잘못이 많다고 생각해요.db_1 | Error: Database is uninitialized and superuser password is not specified.
.
.
.
web_1 | /usr/local/bundle/gems/webpacker-4.2.2/lib/webpacker/configuration.rb:95:in `rescue in load': Webpacker configuration file not found /myapp/config/webpacker.yml. Please run rails webpacker:install Error: No such file or directory @ rb_sysopen - /myapp/config/webpacker.yml (RuntimeError)
위의 오류는 PostgreSQL 암호가 필요하기 때문에 발생한 메시지입니다.bundle install
에서 추서하다.config/database.yml
default: &default
adapter: postgresql
encoding: unicode
host: db
username: postgres
password: password # <= この部分
pool: 5
또 다른 오류는 기본적으로 Webpacker가 Rails6에서 왔기 때문에 Webpacker를 설치해야 한다는 것입니다.그러면 이 Webpacker 설치에는 yarn 또는 Node가 필요합니다.js를 설치해야 한다고 들었어요.
이에 대응하려면 Dockerfile을 편집해야 합니다.
Dockerfile
FROM ruby:2.6.5
RUN apt-get update -qq && apt-get install -y nodejs postgresql-client
# yarnインストール
RUN apt-get update && apt-get install -y curl apt-transport-https wget
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \
echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list
RUN apt-get update && apt-get install -y yarn
# Node.jsインストール
RUN curl -sL https://deb.nodesource.com/setup_7.x | bash - && \
apt-get install nodejs
RUN mkdir /myapp
WORKDIR /myapp
COPY Gemfile /myapp/Gemfile
COPY Gemfile.lock /myapp/Gemfile.lock
RUN bundle install
COPY . /myapp
# 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 3000
# Start the main process.
CMD ["rails", "server", "-b", "0.0.0.0"]
그럼 Webpacker를 설치해 보세요.$ docker-compose stop
$ docker-compose down
$ docker-compose run web bundle exec rails webpacker:install
.
.
Webpacker successfully installed 🎉 🍰
Webpacker가 설치되었습니다.용기를 다시 시작하다.
$ docker-compose up
2-5 데이터베이스 생성데이터베이스를 만듭니다.이게 완성이야.
$ docker-compose run web rails db:create
Starting myapp_db_1 ... done
Created database 'myapp_development'
Created database 'myapp_test'
2-6 액세스 시도브라우저에서 액세스를 시도합니다http://localhost:3000/.모두가 익숙한 화면이 나를 맞이하여 순조롭게 성공했다!
Yay!
총결산
Docker에서 Rails6 환경을 생성하려고 시도했습니다.
실제로 작업할 때 작업 폴더의 이름은 Dockerfile에서 지정한 폴더 이름과 다르고 다른 것도 까다롭다.다른 분들에게 도움이 됐으면 좋겠어요.
Reference
이 문제에 관하여(Docker&Rails6 환경을 구축하십시오.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Dyoko_/items/1fd61dcb6099bf7d9f97
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Docker&Rails6 환경을 구축하십시오.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Dyoko_/items/1fd61dcb6099bf7d9f97텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)