рдбреЙрдХрд░ рдХреЗ рд╕рд╛рде рдЕрдореГрдд / рдлреАрдирд┐рдХреНрд╕ рдкрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд┐рдХрд╛рд╕



рдмрд┐рд▓реНрд▓реА рдХреЗ рдиреАрдЪреЗ рдПрдХ рдЫреЛрдЯрд╛ рдФрд░ рд╕рд░рд▓ рдЧрд╛рдЗрдб рд╣реИ рдЬреЛ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдПрд▓рд┐рдХреНрдЬрд┐рд░ / рдлреАрдирд┐рдХреНрд╕ + рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдХреНрдпреВрдПрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдФрд░ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЙрдХрд░ рдХрдореНрдкреЛрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдПред

рдЯреНрд░реЗрдирд┐рдВрдЧ


рдПрдХ рдЦрд╛рд▓реА <app_dir> рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рдПрдВ рдФрд░ рдЙрд╕ рдкрд░ рдЬрд╛рдПрдВ:

mkdir <app_dir> && cd <app_dir> 

рдПрдХ рдбреЙрдХрдлрд╝рд┐рд▓ рдмрдирд╛рдПрдВ рдФрд░ рдЗрд╕реЗ рд╕рд╛рдордЧреНрд░реА рд╕реЗ рднрд░реЗрдВред

<app_dir> / dockerfile
 FROM elixir:latest RUN apt-get update -qq && apt-get install -y libpq-dev && apt-get install -y build-essential inotify-tools erlang-dev erlang-parsetools apt-transport-https ca-certificates && apt-get update && 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 && apt-get update && apt-get install --no-install-recommends yarn RUN mix local.hex --force && mix local.rebar --force RUN mix archive.install hex phx_new 1.4.0 --force RUN curl -sL https://deb.nodesource.com/setup_11.x | bash - && apt-get install -y nodejs WORKDIR /home/app 


Docker-compose.yml рдмрдирд╛рдПрдВ рдФрд░ рдЗрд╕реЗ рд╕рд╛рдордЧреНрд░реА рд╕реЗ рднрд░реЗрдВред

<app_dir> /docker-compose.yml
 version: '3' services: web: build: . command: mix phx.server volumes: - .:/home/app ports: - "4000:4000" links: - db depends_on: - db test: image: <app_dir>_web command: mix test environment: MIX_ENV: test PORT: 4001 volumes: - .:/home/app db: image: postgres:latest ports: - '5432:5432' environment: POSTGRES_USER: <db_user> POSTGRES_PASSWORD: <db_user_password> 



рдкрд░рд┐рдпреЛрдЬрдирд╛ рдирд┐рд░реНрдорд╛рдг


рд╣рдо docker-compose рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдирдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЬреЗрдирд░реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ <app_name> рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдирд╛рдо рд╣реИ:

 docker-compose run web mix phx.new . --app <app_name> 

рдпрджрд┐ рдЖрдк рд▓рд┐рдирдХреНрд╕ рдкрд░ рдбреЙрдХрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдирд┐рд░реНрдорд┐рдд рдлрд╛рдЗрд▓реЗрдВ рд░реВрдЯ рдХреЗ рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рдореЗрдВ рд╣реЛрддреА рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдХрдВрдЯреЗрдирд░ рдЕрдкрдиреА рдУрд░ рд╕реЗ рдЪрд▓рддрд╛ рд╣реИред рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдХрдард┐рдирд╛рдЗрдпреЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕реНрд╡рд╛рдореА рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

 sudo chown -R $USER:$USER . 

рдбреЗрдЯрд╛рдмреЗрд╕ рдХрдиреЗрдХреНрд╢рди


рд╣рдорд╛рд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рд╕реЗрдЯрд┐рдВрдЧ рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рджреЛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

<app_dir> /config/dev.exs
 # Configure your database config :<app_name>, <App_name>.Repo, username: <db_user>, password: <db_user_password>, database: <app_name>_dev, hostname: "db", pool_size: 10 


<app_dir> /config/test.exs
 # Configure your database config :<app_name>, <App_name>.Repo, username: <db_user>, password: <db_user_password>, database: <app_name>_test, hostname: "db", pool_size: 10 


рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╕рдорд╛рдпреЛрдЬрд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрдзрд╛рд░ рдмрдирд╛рддреЗ рд╣реИрдВ:

 docker-compose run web mix ecto.create 

 docker-compose run test mix ecto.create 

рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ


рдЦреИрд░, рдпрд╣ рдХреЗрд╡рд▓ рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИ:

 docker-compose up -d 

рд╡рд╣ рд╕рдм рд╣реИред рдЕрдм рд╣рдорд╛рд░рд╛ рдЖрд╡реЗрджрди http : //127.0.0.1-00-00000 рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИред



рдкрд░реАрдХреНрд╖рдг


рдФрд░ рдЕрдВрдд рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред

рд╕рднреА рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

 docker-compose run test 

рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП:

 docker-compose run test mix test test/<app_name>_web/controllers/page_controller_test.exs 

рдпрд╣ рд╕рдм, рд╕рдм рдЕрдЪреНрдЫрд╛ рд╣реИ!

Source: https://habr.com/ru/post/hi439718/


All Articles