Created
April 22, 2023 11:39
-
-
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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