J'ai fait la construction Docker des rails + postgresql comme officiel, mais cela n'a pas fonctionné, alors j'ai corrigé certains

supposition

macOS Catalina Docker for Mac 2.3.0.5

officiel

Quickstart: Compose and Rails

code

Dockerfile Quand j'ai essayé de suivre la description officielle, j'ai soudainement eu diverses erreurs, alors j'ai ajouté quelque chose qui manquait à Gugu. De plus, le ruby officiel est la version 2.5, mais je l'ai fait le dernier 2.7.2 le 01/11/2020

officiel

FROM ruby:2.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"]

FROM ruby:2.7.2
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 -qq && apt-get install -y nodejs postgresql-client yarn
#même que ci-dessous

Gemfile Officiellement, la version des rails est 6, mais je l'ai fait le dernier 6 le 2020/11/1

officiel

source 'https://rubygems.org'
gem 'rails', '~>5'

source 'https://rubygems.org'
gem 'rails', '~> 6.0.3', '>= 6.0.3.4'

docker-compose.yml

Pour une raison quelconque, la base de données n'a pas été rendue permanente même si j'ai suivi les articles officiels et autres, mais j'étais confuse, mais je l'ai résolue par cette méthode. https://github.com/docker/compose/issues/5012#issuecomment-316518185

(officiel)docker-compose.yml


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

docker-compose.yml


version: '3'
services: 
  db:
    image: postgres
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: password
      PGDATA: /var/postgres_data #ajouter à
    volumes: 
      - ./tmp/db:/var/postgres_data #Réparer
    ports:
      - "5432:5432"
  web: #le même

ports: "3001:3000"


 Lors de la connexion au serveur de rails, spécifiez 3001.
 (Ou changez le port sur la face avant)

## procédure
 Veuillez vous référer à cette vidéo pour la procédure de base car elle était facile à comprendre.
 [[Construction de l'environnement des rails] Construction de l'environnement avec docker + rails + mysql (même les débutants peuvent terminer en 30 minutes!)](Https://www.youtube.com/watch?v=Fq1PH0Gwi8I)
 * Cette vidéo est rails5, ruby2.5 avec mysql au lieu de postgresql

## Connexion DB

 * Vous ne pouvez pas vous connecter tant que le conteneur n'est pas démarré.
 ![スクリーンショット 2020-11-03 9.55.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/566220/2a8fc39b-a393-d577-f135-21c61a2d8697.png)

 Liberté de nom
 Docker-Set ʻUser` ce qui est décrit dans POSTGRES_USER dans compose.yml
 Définissez ce qui est décrit dans POSTGRES_PASSWORD dans `Password` docker-compose.yml
 Définissez ce qui est décrit dans `development: database` of` Database`` myapp / config / database.yml`


Recommended Posts

J'ai fait la construction Docker des rails + postgresql comme officiel, mais cela n'a pas fonctionné, alors j'ai corrigé certains
Je n'ai pas compris la signification de DI, @Autowired ou injection, alors j'ai recherché.
[Construction de l'environnement Rails & Docker & MySQL] J'ai démarré le conteneur, mais je ne trouve pas MySQL ...?
Je l'ai utilisé sans connaître la cartographie O / R des rails, donc je l'ai vérifié.