Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > it.comp.www.php > #21901 > unrolled thread
| Started by | alex <1j9448a02@lnx159sneakemail.com.invalid> |
|---|---|
| First post | 2018-03-13 14:37 +0100 |
| Last post | 2018-03-14 13:18 +0100 |
| Articles | 8 — 2 participants |
Back to article view | Back to it.comp.www.php
mysql all'interno di docker alex <1j9448a02@lnx159sneakemail.com.invalid> - 2018-03-13 14:37 +0100
Re: mysql all'interno di docker Alessandro Pellizzari <shuriken@amiran.it> - 2018-03-13 15:02 +0000
Re: mysql all'interno di docker alex <1j9448a02@lnx159sneakemail.com.invalid> - 2018-03-13 16:22 +0100
Re: mysql all'interno di docker Alessandro Pellizzari <shuriken@amiran.it> - 2018-03-13 16:58 +0000
Re: mysql all'interno di docker alex <1j9448a02@lnx159sneakemail.com.invalid> - 2018-03-13 18:57 +0100
Re: mysql all'interno di docker alex <1j9448a02@lnx159sneakemail.com.invalid> - 2018-03-13 19:21 +0100
Re: mysql all'interno di docker Alessandro Pellizzari <shuriken@amiran.it> - 2018-03-14 10:24 +0000
Re: mysql all'interno di docker alex <1j9448a02@lnx159sneakemail.com.invalid> - 2018-03-14 13:18 +0100
| From | alex <1j9448a02@lnx159sneakemail.com.invalid> |
|---|---|
| Date | 2018-03-13 14:37 +0100 |
| Subject | mysql all'interno di docker |
| Message-ID | <p88k60$17hu$1@gioia.aioe.org> |
++++ cat docker-compose.yml
version: '3.3'
services:
app:
build:
context: .
dockerfile: docker/Dockerfile
image: laravel-docker
ports:
- 4000:80
volumes:
- ./src:/var/www/html
links:
- mysql
- redis
environment:
DB_HOST: mysql
DB_DATABASE: test
DB_USERNAME: root
DB_PASSWORD: root
REDIS_HOST: redis
SESSION_DRIVER: redis
CACHE_DRIVER: redis
mysql:
image: mysql:5.7
ports:
- 13306:3306
environment:
MYSQL_DATABASE: test
MYSQL_USER: root
MYSQL_PASSWORD: root
MYSQL_ROOT_PASSWORD: root
volumes:
- ./dump.sql:/docker-entrypoint-initdb.d/dump.sql
redis:
image: redis:4.0-alpine
ports:
- 16379:6379
++++ cat docker/Dockerfile
FROM php:7.2.2-apache
RUN docker-php-ext-install mbstring pdo pdo_mysql
++++ cat src/index.php
<?php
error_reporting(255);
$pdo = new PDO(
'mysql:dbname=test;host=mysql',
'root',
'root'
);
++++ docker-compose up -d --build
Building app
++++ curl http://localhost:4000
<b>Fatal error</b>: Uncaught PDOException: SQLSTATE[HY000] [2002]
Connection refused in /var/www/html/index.php:7
Perchè?
[toc] | [next] | [standalone]
| From | Alessandro Pellizzari <shuriken@amiran.it> |
|---|---|
| Date | 2018-03-13 15:02 +0000 |
| Message-ID | <fgq7g1FajreU1@mid.individual.net> |
| In reply to | #21901 |
On 13/03/2018 13:37, alex wrote:
> mysql:
> ports:
> - 13306:3306
> Perchè?
Perché!
Ah, con la config che hai usato il DB rimane dentro al container e viene
distrutto con lui.
Questa è la config che uso io:
mysql:
image: mysql:latest
ports:
- "3306:3306"
volumes:
- ${LOCALPATH}/data/mysql:/var/lib/mysql:cached
environment:
- "MYSQL_ROOT_PASSWORD=supersecretpassword"
command: |
mysqld --datadir=/var/lib/mysql --user=mysql --server-id=1
--log-bin=/var/log/mysql/mysql-bin.log
Bye.
[toc] | [prev] | [next] | [standalone]
| From | alex <1j9448a02@lnx159sneakemail.com.invalid> |
|---|---|
| Date | 2018-03-13 16:22 +0100 |
| Message-ID | <p88qau$1jdr$1@gioia.aioe.org> |
| In reply to | #21902 |
Il 13/03/2018 16:02, Alessandro Pellizzari ha scritto:
>
> Perché!
>
>
> Ah, con la config che hai usato il DB rimane dentro al container e viene
> distrutto con lui.
>
Però c'è l'opzione -d ?
> Questa è la config che uso io:
>
> mysql:
> image: mysql:latest
> ports:
> - "3306:3306"
> volumes:
> - ${LOCALPATH}/data/mysql:/var/lib/mysql:cached
> environment:
> - "MYSQL_ROOT_PASSWORD=supersecretpassword"
> command: |
> mysqld --datadir=/var/lib/mysql --user=mysql --server-id=1
> --log-bin=/var/log/mysql/mysql-bin.log
>
> Bye.
+ cat docker-compose.yml
version: '3.3'
services:
app:
build:
context: .
dockerfile: docker/Dockerfile
image: laravel-docker
ports:
- 4000:80
volumes:
- ./src:/var/www/html
links:
- mysql
- redis
environment:
DB_HOST: mysql
DB_DATABASE: test
DB_USERNAME: root
DB_PASSWORD: root
REDIS_HOST: redis
SESSION_DRIVER: redis
CACHE_DRIVER: redis
mysql:
image: mysql:latest
ports:
- 3306:3306
environment:
MYSQL_DATABASE: test
MYSQL_USER: root
MYSQL_PASSWORD: root
MYSQL_ROOT_PASSWORD: root
volumes:
- ${LOCALPATH}/dump.sql:/docker-entrypoint-initdb.d/dump.sql:cached
redis:
image: redis:4.0-alpine
ports:
- 16379:6379
command:
mysqld --datadir=/var/lib/mysql --user=mysql --server-id=1
--log-bin=/var/log/mysql/mysql-bin.log
+ docker-compose up -d --build
WARNING: The LOCALPATH variable is not set. Defaulting to a blank string.
Creating network "dockermysql_default" with the default driver
Building app
Step 1/2 : FROM php:7.2.2-apache
---> 08685253e459
Step 2/2 : RUN docker-php-ext-install mbstring pdo pdo_mysql
---> Using cache
---> fdb2f4e67537
Successfully built fdb2f4e67537
Successfully tagged laravel-docker:latest
Creating dockermysql_mysql_1 ... error
Creating dockermysql_redis_1 ...
Creating dockermysql_redis_1 ... done
_mysql_1
(2fc2fcfccee1beb12e9c9a73e20070a601cad0c52d1ad2a35d1b63f1be412b2d):
Error starting userland proxy: listen tcp 0.0.0.0:3306: bind: address
already in use
ERROR: for mysql Cannot start service mysql: driver failed programming
external connectivity on endpoint dockermysql_mysql_1
(2fc2fcfccee1beb12e9c9a73e20070a601cad0c52d1ad2a35d1b63f1be412b2d):
Error starting userland proxy: listen tcp 0.0.0.0:3306: bind: address
already in use
ERROR: Encountered errors while bringing up the project.
rino@comex:~$
[toc] | [prev] | [next] | [standalone]
| From | Alessandro Pellizzari <shuriken@amiran.it> |
|---|---|
| Date | 2018-03-13 16:58 +0000 |
| Message-ID | <fgqeabFc6o2U1@mid.individual.net> |
| In reply to | #21903 |
On 13/03/2018 15:22, alex wrote: > Il 13/03/2018 16:02, Alessandro Pellizzari ha scritto: >> Ah, con la config che hai usato il DB rimane dentro al container e >> viene distrutto con lui. > Però c'è l'opzione -d ? -d fa semplicemente girare i container in background Se vuoi che i dati rimangano quando distruggi il container (per esempio per upgradare a una nuova versione dell'immagine MySQL) devi usare un volume e tenere i dati fuori dal container. Magari distruggerli è esattamente quello che vuoi. Non è sbagliato di principio. Per esempio potresti voler lanciare il DB ogni volta con un DB pulito e importare i dati di base per i test. > WARNING: The LOCALPATH variable is not set. Defaulting to a blank string. Naturalmente devi valorizzare le variabili nel tuo ambiente locale (nella shell normale, in pratica). Puoi usare $HOME per la tua home, ecc. > _mysql_1 > (2fc2fcfccee1beb12e9c9a73e20070a601cad0c52d1ad2a35d1b63f1be412b2d): > Error starting userland proxy: listen tcp 0.0.0.0:3306: bind: address > already in use Probabilmente hai già un MySQL che gira sulla macchina locale. Ma mi sa che hai ragione e non era quello il problema, visto che nella rete "interna" dovrebbe comunque esporlo come 3306 anche se fai l'alias locale. Bye.
[toc] | [prev] | [next] | [standalone]
| From | alex <1j9448a02@lnx159sneakemail.com.invalid> |
|---|---|
| Date | 2018-03-13 18:57 +0100 |
| Message-ID | <p893dc$bor$1@gioia.aioe.org> |
| In reply to | #21904 |
Il 13/03/2018 17:58, Alessandro Pellizzari ha scritto:
> On 13/03/2018 15:22, alex wrote:
>
>> Il 13/03/2018 16:02, Alessandro Pellizzari ha scritto:
>
>>> Ah, con la config che hai usato il DB rimane dentro al container e
>>> viene distrutto con lui.
>
>> Però c'è l'opzione -d ?
>
> -d fa semplicemente girare i container in background
> Se vuoi che i dati rimangano quando distruggi il container (per esempio
> per upgradare a una nuova versione dell'immagine MySQL) devi usare un
> volume e tenere i dati fuori dal container.
>
> Magari distruggerli è esattamente quello che vuoi. Non è sbagliato di
> principio. Per esempio potresti voler lanciare il DB ogni volta con un
> DB pulito e importare i dati di base per i test.
Esatto.
>> _mysql_1
>> (2fc2fcfccee1beb12e9c9a73e20070a601cad0c52d1ad2a35d1b63f1be412b2d):
>> Error starting userland proxy: listen tcp 0.0.0.0:3306: bind: address
>> already in use
>
> Probabilmente hai già un MySQL che gira sulla macchina locale.
O forse perchè le due porte (esterna:interna) sono uguali, ed io ho
copiato esattamente quello che hai scritto tu:
ports:
- "3306:3306"
> Ma mi sa che hai ragione e non era quello il problema, visto che nella
> rete "interna" dovrebbe comunque esporlo come 3306 anche se fai l'alias
> locale.
Ricominciamo da capo.
Voglio creare un immagine in cui gira apache, php, e mysql.
Innanzitutto
mkdir my-project
cd my-project
touch docker-compose.yml
Poi? (una cosa alla volta e con ordine)
[toc] | [prev] | [next] | [standalone]
| From | alex <1j9448a02@lnx159sneakemail.com.invalid> |
|---|---|
| Date | 2018-03-13 19:21 +0100 |
| Message-ID | <p894qk$edm$1@gioia.aioe.org> |
| In reply to | #21904 |
Il 13/03/2018 17:58, Alessandro Pellizzari ha scritto: > >> WARNING: The LOCALPATH variable is not set. Defaulting to a blank string. > > Naturalmente devi valorizzare le variabili nel tuo ambiente locale > (nella shell normale, in pratica). Puoi usare $HOME per la tua home, ecc. Per curiosità, perchè usi $LOCALPATH? In quale file ha messo l'istruzione export LOCALPATH=... ???
[toc] | [prev] | [next] | [standalone]
| From | Alessandro Pellizzari <shuriken@amiran.it> |
|---|---|
| Date | 2018-03-14 10:24 +0000 |
| Message-ID | <fgsbi3Fp7keU1@mid.individual.net> |
| In reply to | #21906 |
On 13/03/2018 18:21, alex wrote: > Per curiosità, perchè usi $LOCALPATH? > In quale file ha messo l'istruzione > > export LOCALPATH=... Uso direnv per tenere la config nella cartella del progetto e trovarmi le env-vars automaticamente inizializzate quando ci entro. Bye.
[toc] | [prev] | [next] | [standalone]
| From | alex <1j9448a02@lnx159sneakemail.com.invalid> |
|---|---|
| Date | 2018-03-14 13:18 +0100 |
| Message-ID | <p8b3vd$1jjr$1@gioia.aioe.org> |
| In reply to | #21907 |
Il 14/03/2018 11:24, Alessandro Pellizzari ha scritto:
> On 13/03/2018 18:21, alex wrote:
>
>> Per curiosità, perchè usi $LOCALPATH?
>> In quale file ha messo l'istruzione
>>
>> export LOCALPATH=...
>
> Uso direnv per tenere la config nella cartella del progetto e trovarmi
> le env-vars automaticamente inizializzate quando ci entro.
$ echo export FOO=foo > .envrc
$ direnv allow .
$ echo ${FOO-nope}
nope
Non sembra funzionare :(
[toc] | [prev] | [standalone]
Back to top | Article view | it.comp.www.php
csiph-web