Skip to content

Instantly share code, notes, and snippets.

@slava-vishnyakov
Created April 22, 2023 11:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save slava-vishnyakov/917f98bda630017c89f9025ead267c72 to your computer and use it in GitHub Desktop.
Save slava-vishnyakov/917f98bda630017c89f9025ead267c72 to your computer and use it in GitHub Desktop.
Adds docker-compose.yml and package.json to Phoenix app with postgres exposed on random port
#!/bin/bash
# Generate random ports
postgres_port=$((5000 + RANDOM % 1000))
redis_port=$((7000 + RANDOM % 1000))
elastic_port=$((9000 + RANDOM % 1000))
# Set test ports
postgres_test_port=$((postgres_port + 1))
redis_test_port=$((redis_port + 1))
elastic_test_port=$((elastic_port + 1))
# Create docker-compose.yml file
cat > docker-compose.yml << EOF
version: '2'
services:
postgres:
image: postgres:13.1
ports:
- "${postgres_port}:5432"
environment:
POSTGRES_PASSWORD: secret
POSTGRES_USER: webapp
POSTGRES_DB: webapp
postgres_test:
image: postgres:13.1
ports:
- "${postgres_test_port}:5432"
environment:
POSTGRES_PASSWORD: secret
POSTGRES_USER: webapp
POSTGRES_DB: webapp
# redis:
# image: redis:6
# ports:
# - "${redis_port}:6379"
#
# redis_test:
# image: redis:6
# ports:
# - "${redis_test_port}:6379"
# elastic:
# image: docker.elastic.co/elasticsearch/elasticsearch:7.10.1
# ports:
# - "${elastic_port}:9200"
#
# elastic_test:
# image: docker.elastic.co/elasticsearch/elasticsearch:7.10.1
# ports:
# - "${elastic_test_port}:9200"
EOF
# Update the dev.exs file
sed -i.bak "s/username: \"postgres\",/username: \"webapp\",/g" config/dev.exs
sed -i.bak "s/password: \"postgres\",/password: \"secret\",/g" config/dev.exs
sed -i.bak "s/hostname: \"localhost\",/hostname: \"0.0.0.0\",/g" config/dev.exs
sed -i.bak "s/database: \"[^\"]*\",/database: \"webapp\",\n port: ${postgres_port},/g" config/dev.exs
rm config/dev.exs.bak
# Create package.json file
cat > package.json << EOF
{
"scripts": {
"phx.server": "mix phx.server",
"start-compose": "docker-compose up",
"stop-compose": "docker-compose stop",
"ecto.migrate": "mix ecto.migrate"
}
}
EOF
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment